프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제



핵심
JOIN
이 문제에서는 필요한 정보(년, 월 / 성별)가 두 테이블에 걸쳐 나누어져있습니다.
따라서 두 테이블을 합치는게 선행되어야 하고 이를 위해 JOIN을 이용합니다.
GROUP BY
문제의 조건에 언급된 '년, 월, 성별 별로'는 'GROUP BY 년, 월, 성별' 구문과 의미가 정확히 일치합니다.
그룹으로 묶었기 때문에 그 안에 여러 레코드가 포함되어 있을 것입니다.
집계 함수를 사용하면 그 정보를 가공하여 표현할 수 있습니다.
여기선 COUNT를 이용해서 사용자의 수를 표현하였습니다.
DISTINCT
출력 조건을 보면 [년, 월, 성별] 별로 상품을 구매한 회원 수를 집계하라고 되어있습니다.
해당 월에 구매한 횟수가 아니라 구매한 회원 수(남자 수, 여자 수)를 출력하는 것 입니다.
즉, 한 유저가 여러 번에 걸쳐 구매했더라도 구매한 회원 수는 1 이겠죠.
여기선 중복을 제거하는 DISTINCT 키워드를 이용하여 이를 처리하였습니다.
구현
Code
SELECT
YEAR(SALES_DATE) AS YEAR,
MONTH(SALES_DATE) AS MONTH,
GENDER,
COUNT(DISTINCT USER_ID) AS USERS
FROM USER_INFO
JOIN ONLINE_SALE
USING (USER_ID)
WHERE GENDER IS NOT NULL
GROUP BY YEAR, MONTH, GENDER
ORDER BY YEAR, MONTH, GENDER728x90
반응형
'CS > SQL Problem' 카테고리의 다른 글
| [Programmers] JOIN > 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 (0) | 2024.07.11 |
|---|---|
| [Programmers] 서울에 위치한 식당 목록 출력하기 (0) | 2024.07.10 |
| [Programmers] 조건에 맞는 사용자와 총 거래금액 조회하기 (0) | 2024.07.08 |
| [Programmers] JOIN > 있었는데요 없었습니다 (0) | 2024.07.07 |
| [Programmers] JOIN > 조건에 맞는 도서와 저자 리스트 출력하기 (0) | 2024.07.04 |