[SQL] order by 절에 집계함수?

Gi Woon Lee·2024년 9월 3일
0

TIL

목록 보기
55/78
select name, count(user_id)
from MovieRating join Users using (user_id)
group by name
order by name

위 코드를 이해하는 건 너무 쉽다.
name별로 그룹을 만들어 각 name그룹마다 얼마나 많은 user_id가 집계되는지 구하는 쿼리이다

  • 쿼리 동작 순서는 다음과 같다.
    1.FROM
    2.WHERE
    3.GROUP BY
    4.HAVING
    5.SELECT
    6.ORDER BY
select name 
from MovieRating join Users using (user_id)
group by name
order by count(user_id) desc, name

위 코드에서는 SELECT절에서 name을 호출할 때 name그룹에 대한 집계 함수가 계산된다.
그리고 이미 계산된 값을 order by절에서 정렬하는 것이다.

즉, ORDER BY 절에서 COUNT(user_id)를 사용할 수 있는 이유는 그 값이 이미 SELECT 절에서 계산되어 결과 집합에 포함되어 있기 때문이다.

0개의 댓글