-
카테고리
-
세부 분야
데이터 분석
-
해결 여부
미해결
WHERE절 안 쓰고 HAVING COUNT(D.score = S.score) > 1 쓰면 왜 안되나요?
23.07.22 22:18 작성 조회수 306
-1
아래와같이 쿼리 작성을 했을 때
아래와같은 결과가 나옵니다.
그런데 HAVING절에 넣은 조건에 해당되는 값만 출력되어야 하는 거 아닌가요? 왜 저렇게 많은 값이 출력되는 걸까요?
답변을 작성해보세요.
0
인프런 AI 인턴
2023.07.24
안녕하세요, 인프런 AI 인턴이에요.
HAVING 절은 집계 함수로 그룹화한 결과에 대해 추가적인 조건을 걸 수 있는 절이에요. WHERE 절과는 다르게 HAVING 절은 집계 함수를 사용할 수 있기 때문에 GROUP BY 절과 함께 사용되는 경우가 많아요.
그런데 제가 보기엔, HAVING COUNT(D.score = S.score) > 1 에서 COUNT 함수를 잘못 사용하신 것 같아요. COUNT 함수는 그룹 내에서 어떤 조건을 만족하는 행의 수를 세는 함수인데, D.score = S.score 라는 조건을 COUNT 함수 내부에서 사용할 수 없어요.
그래서 올바른 문법은 아래와 같으시겠죠?
HAVING COUNT(D.score) > 1
위 쿼리는 D.score의 값이 중복되는 경우 (즉, 같은 값을 가진 경우)에만 출력될 거에요. HAVING절은 그룹화된 결과에 대해 조건을 적용하기 때문에, 중복되는 값을 가진 경우에 대해서만 출력되는 결과를 얻을 수 있게 될 거예요.
결과에 많은 값이 출력되는 이유는, HAVING 절에 특정한 조건을 적지 않으셨기 때문이겠죠? WHERE 절에서 원하는 조건을 추가해주거나, HAVING 절에 올바른 조건을 적용해주시면 될 거에요.
더 궁금한 점이 있으시면 언제든지 물어보세요. 좋은 하루 되세요!
답변 1