select name, count(user_id)
from MovieRating join Users using (user_id)
group by name
order by name
위 코드를 이해하는 건 너무 쉽다.
name
별로 그룹을 만들어 각 name그룹마다 얼마나 많은 user_id
가 집계되는지 구하는 쿼리이다
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 절에서 계산되어 결과 집합에 포함되어 있기 때문이다.