GROUP BY, DISTINCT, COUNT, YEAR, MONTH, JOIN, IS NOT NULL 이용
https://school.programmers.co.kr/learn/courses/30/lessons/131532
SELECT
YEAR(b.SALES_DATE) AS YEAR,
MONTH(b.SALES_DATE) AS MONTH,
a.GENDER,
COUNT(DISTINCT b.USER_ID) AS USERS
FROM USER_INFO a
JOIN ONLINE_SALE b
ON a.USER_ID = b.USER_ID
WHERE a.GENDER IS NOT NULL
GROUP BY 1, 2, 3
ORDER BY 1, 2, 3;
문제 사항 : ONLINE_SALE 테이블에 같은 USER_ID 가 여러 개 있는 경우가 있어 COUNT 할 경우 중복 카운트 값이 발생하여 예상결과와 다르게 출력되었다.
해결 : DISTINCT 를 이용하여 USER_ID 중복을 제거하여 중복 카운트 값을 제거하였다.
깨달은 바 : 문제 사항을 파악하는데에 어려움이 있었다. ONLINE_SALE 테이블에서 USER_ID 가 여러 개 있는 것을 생각 하지 못하고 문제를 풀려고 했던 것이 아쉽다. 앞으로 문제 구조를 더 잘 파악할 수 있도록 해야겠다.
'코딩테스트 > programming_SQL' 카테고리의 다른 글
[SQL] 우유와 요거트가 담긴 장바구니도움말_62284 (0) | 2023.11.17 |
---|---|
[SQL] 서울에 위치한 식당 목록 출력하기_131118 (1) | 2023.11.17 |
[SQL] 취소되지 않은 진료 예약 조회하기_132204 (0) | 2023.11.17 |
[SQL] 5월 식품들의 총매출 조회하기_131117 (1) | 2023.11.17 |
[SQL] 식품분류별 가장 비싼 식품의 정보 조회하기_131116 (0) | 2023.11.17 |