WHERE 집계 함수

김동현·2024년 8월 13일

TIL

목록 보기
2/3

JOIN - 그룹별 조건에 맞는 식당 목록 출력하기 를 풀다가

SELECT *
FROM review
WHERE cnt = MAX(cnt)

과 같은 WHERE에서 리뷰를 많이 작성한 쿼리를 뽑을 때 해당 쿼리가 동작하지 않아서 서브 쿼리를 사용했다. (사실 그냥 될 줄 알았고 그랬다면 더 빨리 문제를 풀었을 듯...)

검색해보니 max(cnt)는 집계 함수로부터 나온 값인데, where 절에서 집계 함수를 직접 사용할 수 없다.

  • max(cnt)는 집계 함수로 그룹화된 결과에서 최대값을 반환.
  • 전제 집합을 고려한 후 단일 값을 반환하는데, where 절은 개별 행에 대한 조건만 평가할 수 있기 때문에 동작 방식이 달라 비교를 할 수 없다.
  • 따라서, 해결 방법으로 서브 쿼리 or CTE를 사용하여 비교를 할 수 있다.

그래서

SELECT *
FROM review
WHERE cnt = (SELECT MAX(cnt) FROM review)	

위와 같은 서브 쿼리를 사용해서 where 조건을 만족할 수 있다.

profile
'The best way to get started is to quit talking and begin doing.'

0개의 댓글