SQL

[SQL 고득점 Kit] SELECT : 재구매가 일어난 상품과 회원 리스트 구하기

shur_ 2024. 8. 1. 03:27


 

SELECT 문에 있는 모든 열은 집계 함수가 되거나 GROUP BY 절에 나타나야 한다. GROUP BY 절을 사용하는데 만약 SELECT 문에 집계 함수를 사용하지 않거나 GROUP BY 절에 언급되지 않은 열이 존재한다면 오류가 발생한다.

SELECT 절에서 집계 함수를 제외한 칼럼을 GROUP BY 절에 기술한다고 생각하면 된다.

 

해당 문제에서 SELECT에 집계 함수가 사용되지 않았는데 이렇게 작성해도 되는건가 싶었는데, GROUP BY 절에 SELECT의 모든 열들이 포함되어 있으므로 괜찮았다.

 

 

하지만 집계 함수를 사용하지 않고 GROUP BY절을 사용했기 때문에 위와 같은 쿼리를 입력하면 아래와 같은 결과가 나온다.

 

각 조합의 유일한 행만 출력된다.

 

https://kghworks.tistory.com/97

 

DISTINCT, GROUP BY 무엇을 쓸까

데이터 중복제거, 집계 함수 사용 등을 할 때 많이들 사용하는 게 DISTINCT 함수 와 GROUP BY 절입니다. 둘의 차이를 알아보고 경우에 따라 더 효율적으로 쓰기 위해 포스팅합니다. 목차 DISTICNT, GROUP BY

kghworks.tistory.com

 

GROUP BY를 사용할 때 집계 함수가 없는 경우, 단순히 그룹화된 각 조합의 유일한 행만 출력된다.

 

 

SELECT
    USER_ID,
    PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(USER_ID) >= 2
ORDER BY USER_ID, PRODUCT_ID DESC;