[Tools]/SQL 이것저것

[MySQL] YEAR()와 MONTH()를 사용한 DATE TYPE에서 추출

pjw250 2024. 10. 14. 09:51

코딩테스트 연습 - 년, 월, 성별 별 상품 구매 회원 수 구하기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

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

programmers.co.kr

우선 문제는 위 링크 였고, 풀긴 했는데 풀고 나서 다른 사람 답안을 보니.. 나는 너무 돌아온 느낌 (지난번 문제에서 WITH를 알게 되어서 써보고 싶었다.)

WITH SALES AS (
SELECT USER_ID, SALES_AMOUNT, YEAR(SALES_DATE) AS YEAR,
       MONTH(SALES_DATE) AS MONTH
FROM ONLINE_SALE)

SELECT YEAR, MONTH, GENDER, COUNT(DISTINCT(A.USER_ID)) AS USERS
FROM SALES A INNER JOIN USER_INFO B ON A.USER_ID = B.USER_ID
WHERE GENDER IS NOT NULL
GROUP BY YEAR, MONTH, GENDER
ORDER BY 1,2,3
;

 

지금 까지 DATE_FORMAT(X, 조건) 으로 DATE_TYPE 인스턴스를 원하는 값으로 출력 했었는데 만약, DATE_TYPE 인스턴스에서 년도, 월, 일, 시, 분, 초 만 추출 하고 싶으면 바로 

YEAR()

MONTH()

DAY()

HOUR()

MINUTE()

SECOND()

를 써서 간단한 쿼리로 출력이 가능한 것을 알았다.