이중쿼리문

  1. UserInfo 테이블의 select 쿼리 결과를 Result_1이라 한다.

ex) select distinct(user_level) from UserInfo;

  1. 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답변

  • 좋아요

    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;
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.