Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 프로그래머스
- Thymeleaf
- jpa
- Kakao
- 개념
- glod5
- LEVEL2
- Gold4
- LCS
- 백엔드
- gold5
- 백준
- CSS
- HTML
- glod4
- AWS
- mysql
- java
- 9252
- LEVEL1
- 구현
- error
- siver3
- spring
- gold2
- 배포
- leetcode
- leetcode 69
- PYTHON
- 오류
Archives
- Today
- Total
이 험난한 세상에서어어~
년, 월, 성별 별 상품 구매 회원 수 구하기(MySQL) 본문
문제 설명
년, 월, 성별 별로 상품을 구매한 회원의 수를 구하는 문제이다.
https://school.programmers.co.kr/learn/courses/30/lessons/131532
문제 풀이
첫 번째 접근
일단 두 테이블을 JOIN해준 후 년, 월, 성별 별로 묶어 줬다.
JOIN ONLINE_SALE OS
ON UI.USER_ID = OS.USER_ID
GROUP BY YEAR(SALES_DATE), MONTH(SALES_DATE), GENDER
그리고 HAVING을 이용해서 GENDER가 NULL이 아닌 부분만 가지고 오도록 했다.
HAVING GENDER IS NOT NULL
문제 발생
자꾸만 틀렸다고 해서 풀이를 보니 내가 놓친 부분이 있었다.
바로 문제 설명에 나와있듯이 구매한 회원수를 집계하는 것이기에 회원은 중복해서 계산해주면 안 된다는 것. 그래서 USER 부분에 DISTINCT를 넣어주니 정답으로 나왔다.
코드
MySQL
SELECT YEAR(SALES_DATE) AS YEAR, MONTH(SALES_DATE) AS MONTH, GENDER, COUNT(DISTINCT OS.USER_ID) AS USERS
FROM USER_INFO UI
JOIN ONLINE_SALE OS
ON UI.USER_ID = OS.USER_ID
GROUP BY YEAR(SALES_DATE), MONTH(SALES_DATE), GENDER
HAVING GENDER IS NOT NULL
ORDER BY YEAR(SALES_DATE), MONTH(SALES_DATE), GENDER
'algorithm > 코딩 테스트' 카테고리의 다른 글
프로그래머스, 혼자서 하는 틱택토(java) (0) | 2023.07.25 |
---|---|
프로그래머스, 광물 캐기(java) (0) | 2023.07.24 |
프로그래머스, 디펜스 게임(java) (0) | 2023.07.21 |
프로그래머스, 시소 짝꿍 (0) | 2023.07.19 |
프로그래머스, 미로 탈출(java) (0) | 2023.07.18 |