강의로 돌아가기
min0vv

MYSQL 정답 공유 (조인안함)

POINT: 특정 월에 구매한 회원 수를 구하기 위해 DISTINCT 사용하기

예) 아래와 같이 두 SQL문의 출력 결과는 다름
DISTINCT를 하지 않는다면 같은 회원의 다른 날짜 구매내역도 포함해 COUNT 되므로 DISTINCT를 써야함

-- DISTINCT 설명을 위한 예시
SELECT COUNT(USER_ID) -- 7
FROM ONLINE_SALE
WHERE USER_ID <10


SELECT COUNT(DISTINCT USER_ID) -- 4
FROM ONLINE_SALE
WHERE USER_ID <10

답안

작성중인 코드―solution.sql
1
2
3
4
5
6
7
8
9
10
WITH USER_T AS (SELECT USER_ID
                FROM USER_INFO
                WHERE YEAR(JOINED)=2021)
SELECT YEAR(SALES_DATE) AS YEAR, MONTH(SALES_DATE) AS MONTH,
COUNT(DISTINCT(USER_ID)) PUCHASED_USERS,
ROUND(COUNT(DISTINCT USER_ID)/(SELECT COUNT(USER_ID) FROM USER_T),1) AS PUCHASED_RATIO
FROM ONLINE_SALE O
WHERE O.USER_ID IN (SELECT * FROM USER_T)
GROUP BY YEAR(SALES_DATE), MONTH(SALES_DATE)
ORDER BY 1, 2 ASC;
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.