이중쿼리문
조회수 650회
- UserInfo 테이블의 select 쿼리 결과를 Result_1이라 한다.
ex) select distinct(user_level) from UserInfo;
- Result_1의 결과를 하나씩 가져와서 UserInfo 테이블에서 select로 조회한다.
ex) select min(play_time) from UserInfo where user_lever in(select distinct(user_level) from UserInfo)
이렇게 쿼리를 작성하면 각 레벨에 해당하는 최소 플레이 타임이 나열 될 줄 알았는데 결과값으로 테이블 전체의 최소 플레이 타임이 나와버립니다.
결론적으로 제가 하고 싶은것은 Result_1에서 얻은 테이블
user_level
1
3
4
10
의 값을 순차적으로 select min(play_time) from UserInfo where 쿼리문의 where절에 순차적으로 적용하고 싶은데
select min(play_time) from UserInfo where =1
select min(play_time) from UserInfo where =3
select min(play_time) from UserInfo where =4
select min(play_time) from UserInfo where =10
위와같이 적용하고 싶은데 어떻게 해야 되나요?(일일히 하기에는 레벨이 너무 많나요 ㅜㅜ)
1 답변
-
유저를 레벨 별로 분류해, 각 레벨이 얼마나 빨리 해결됐는지(?) =
min(play_time)
를 구하고 싶으신 것 같습니다.이런 경우는 join 을 사용하지 않고, group_by 문을 사용하시면 돼요. group_by 문은 테이블을 특정 기준으로 그룹핑하는데요. group_by 문을 사용하는 쿼리의 aggrigation은 group 별로 적용됩니다.
다음 코드를 참고해주세요.
select user_level, min(play_time) from UserInfo group by user_level;
댓글 입력