데일리루틴(SQL)
WITH n AS (
SELECT
DATE_FORMAT(sales_date, '%Y-%m-%d') AS sales_date,
product_id,
user_id,
sales_amount
FROM
ONLINE_SALE
),
f AS (
SELECT
DATE_FORMAT(sales_date, '%Y-%m-%d') AS sales_date,
product_id,
NULL AS user_id,
sales_amount
FROM
OFFLINE_SALE
),
u AS
(SELECT
*
FROM
n
union distinct
SELECT
*
FROM
f)
SELECT
*
FROM
u
WHERE
MONTH(sales_date) = 03
ORDER BY
sales_date,
product_id,
user_id
- WITH 절 (Common Table Expressions, CTE):
- CTE는 쿼리 블록을 정의하여 여러 번 참조할 수 있도록 함. 이 쿼리에서는 n, f, u라는 세 개의 CTE가 정의되어 있음.
WITH n AS ( -- CTE 정의 )
- CTE는 SELECT 문과 함께 사용되며, 메인 쿼리에서 참조할 수 있음.
- SELECT 절:
- SELECT 문을 사용하여 특정 컬럼을 선택할 수 있음.
- 여기서는 DATE_FORMAT 함수를 사용하여 날짜 형식을 변환함.
SELECT DATE_FORMAT(sales_date, '%Y-%m-%d') AS sales_date, product_id, user_id, sales_amount
- DATE_FORMAT 함수:
- DATE_FORMAT 함수는 날짜를 특정 형식으로 변환함.
- %Y-%m-%d는 연도-월-일 형식을 나타냄.
- NULL 값:
- NULL AS user_id는 user_id에 대해 NULL 값을 명시적으로 할당함.
- UNION:
- UNION은 두 개 이상의 SELECT 문에서 결과를 결합합니다. UNION DISTINCT를 사용하여 중복된 결과를 제거함.
u AS ( SELECT * FROM n UNION DISTINCT SELECT * FROM f )
- WHERE 절:
- WHERE 절을 사용하여 특정 조건을 만족하는 행을 필터링함.
- 여기서는 MONTH(sales_date) = 03으로 3월에 해당하는 데이터만 선택하고 있음.
WHERE MONTH(sales_date) = 03
- ORDER BY 절:
- ORDER BY를 사용하여 결과를 정렬함.
- 여기서는 sales_date, product_id, user_id 순서로 정렬하고 있음.
ORDER BY sales_date, product_id, user_id
'(2024-10) 스파르타 내일배움캠프 - 백엔드 > TIL' 카테고리의 다른 글
(2024-12-30) TIL: SQL 데일리루틴 (0) | 2024.12.30 |
---|---|
(2024-12-19) 트러블슈팅 (0) | 2024.12.19 |
(2024-12-03) TIL, 메모 과제 구조 이해하기 (추가중) (0) | 2024.12.03 |
(2024-12-02) TIL (1) | 2024.12.02 |
(2024-11-29) TIL (1) | 2024.11.29 |