2023년 2월 마지막주를 달려가고 있다. 시간 순삭..😇
새해도 빠르게 지났으니,, 2023년 1월달 요일별 매출을 알아봐야 한다고 가정해보자.
테이블과 컬럼은 아래와 같다.
- Table: order
- Column: customer_id, order_date, price
먼저 yyyy-mm-dd 형태의 order_date 컬럼을 요일로 변환하는 작업이 필요하다.
이때 데이터를 요일로 변환해주는 함수를 사용할 수 있는데,
바로 DAYOFWEEK 함수이다.
| DAYOFWEEK
DAYOFWEEK 함수는 요일을 아래와 같이 숫자 형태로 출력해준다.
DAYOFWEEK | |
출력값 | 의미 |
1 | 일요일 |
2 | 월요일 |
3 | 화요일 |
4 | 수요일 |
5 | 목요일 |
6 | 금요일 |
7 | 토요일 |
함수를 알았으니 쿼리문을 만들어본다.
SELECT DAYOFWEEK(order_date) AS 요일,
SUM(price) AS revenue
FROM order
WHERE order_date >= '2023-01-01'
AND order_date < '2023-02-01'
GROUP BY 1
ORDER BY 2 DESC;
DAYOFWEEK 함수 사용으로 요일은 정상적으로 출력되었지만 데이터 가독성이 떨어지기 때문에,
좀 더 이해하기 쉽도록 CASE 함수를 활용해서 숫자 형태의 요일을 텍스트 형태의 요일로 바꾸는 작업을 진행했다.
| CASE / WHEN THEN / END
CASE 함수로 컬럼의 값을 원하는 값으로 변경해서 출력할 수 있다.
아래와 같은 구조를 가진다.
CASE [컬럼명]
WHEN [출력값] THEN [변경값]
WHEN [출력값] THEN [변경값]
...
END
[출력값] | [변경값] |
1 | SUN |
2 | MON |
3 | TUE |
4 | WED |
5 | THU |
6 | FRI |
7 | SAT |
위 항목을 대입해서 쿼리문을 작성해준다.
SELECT
CASE DAYOFWEEK(order_date)
WHEN '1' THEN 'SUN'
WHEN '2' THEN 'MON'
WHEN '3' THEN 'TUE'
WHEN '4' THEN 'WED'
WHEN '5' THEN 'THU'
WHEN '6' THEN 'FRI'
WHEN '7' THEN 'SAT'
END
AS 요일,
SUM(price) AS revenue
FROM order
WHERE order_date >= '2023-01-01'
AND order_date < '2023-02-01'
GROUP BY 1
ORDER BY 2 DESC;
위 쿼리문의 결과는 아래와 같다!
한가지 욕심을 더 부려보자면,
revenue 에 숫자 구분 표시가 된다면 더 좋을 것 같은데 어떤 함수를 써야할까?
| FORMAT
FORMAT( [컬럼명], 0 )
숫자값에 ',' 콤마를 사용하여 가독성있게 만들어주고 싶다면,
SUM(price) 에 FORMAT 함수를 추가해주면 된다.
FORMAT(SUM(price),0)
FORMAT 함수는 유용하게 쓸일이 많으니 꼭 기억했다가 두고두고 써먹자💚
⇩ 더 읽어보면 좋은 글 🧚♀️ ⇩
DATE_FORMAT 함수 | 날짜에서 요일, 시간 값 반환
2023.03.02 - [TOOLS/My SQL] - [My SQL] DATE_FORMAT 함수 / 날짜에서 요일, 시간 값 출력하기
[My SQL] DATE_FORMAT 함수 / 날짜에서 요일, 시간 값 출력하기
이전 포스팅에서 요일별 매출 출력을 위해 DAYOFWEEK 함수를 활용해서 숫자형 데이터로 요일을 출력하는 방법을 소개했다. 2023.02.22 - [Tools/My SQL] - [My SQL] 요일별 매출 - DAYOFWEEK 함수 / 날짜에서 요일
4xyzw.tistory.com
DATEDIFF / TIMEDIFF 함수 | 날짜 시간 값 차이 반환
2023.03.11 - [TOOLS/My SQL] - [My SQL] DATEDIFF와 TIMEDIFF / 날짜와 시간 차이 반환 / 고객 구매 주기 분석
[My SQL] DATEDIFF와 TIMEDIFF / 날짜와 시간 차이 반환 / 고객 구매 주기 분석
안녕하세요. 에린이 인사드립니다,,😇 요즘 에스큐엘 복습하면서 쿼리문을 이것저것 뽑아보는데, 매일 사용하는 데이터만 만지니까 좀 지루,, 하더라구요. 저는 뭐든 흥미를 빠르게 잃어버리는
4xyzw.tistory.com
'TOOLS > My SQL' 카테고리의 다른 글
[My SQL] DATE_FORMAT 함수 / 날짜에서 요일, 시간 값 출력하기 (0) | 2023.03.02 |
---|---|
[My SQL] LAG 함수 / 현재값 vs 이전값 증감율(차이) 계산하기 (0) | 2023.03.01 |
[SQLD 합격] 46회 SQL 개발자 시험 비전공자 2수 합격 + 가이드라인 (0) | 2022.09.26 |
[My SQL] NULL 값 대응 - COALESCE(코어레스) / IFNULL 함수 (0) | 2022.03.20 |
[My SQL] 구매빈도(Frequency) 확인 - 중복 값 산출 쿼리문 (0) | 2022.03.20 |