UTC : 시간대(타임존)
문자
를 날짜
로PARSE_DATE(날짜형태, 컬럼명)
예시 : 20210912
→PARSE_DATE('%Y%m%d','20210912)
[날짜 PARSE_DATE표시법](https://www.notion.so/a241847fdee74c7aa71a2defbbfc8ce7)
EXTRACT (정보 FROM 컬럼)
- YEAR
- MONTH
- DAY
- DAYOFWEEK —(1~7, 일요일~토요일)
- WEEK (0~53, 일요일 시작)
- WEEK(MONDAY) (0~53, 월요일 시작, MONDAY를 바꿔서 다른요일로 설정 가능)
- QUARTER
더하기 : DATE_ADD(컬럼, INTERVAL 기간)
빼기 : DATE_SUB(컬럼, INTERVAL 기간)
```sql
DATE_ADD(컬럼, INTERVAL 5 day)
DATE_ADD(컬럼, INTERVAL 1 month)
DATE_ADD(컬럼, INTERVAL 2 week)
DATE_ADD(컬럼, INTERVAL 5 quater)
DATE_ADD(컬럼, INTERVAL 1 year)
```
DATE_DIFF(컬럼1, 컬럼2, 단위)
CASE WHEN
CASE WHEN 조건1 THEN 결과1
WHEN 조건2 THEN 결과2
...
WHEN 조건N THEN 결과N ELSE 만약아무것도아니라면 END
CASE WHEN 조건1 THEN 0_결과1
WHEN 조건2 THEN 1_결과2
...
WHEN 조건N THEN N_결과N ELSE 만약아무것도아니라면 END
SUB QUERY
쿼리 속의 쿼리
SELECT MAX(order_date) AS max_order_date
FROM 오더데이터
---가장 최근 주문일자를 구함 sub query
SELECT *
FROM 오더데이터
WHERE order_date = (SELECT MAX(order_date) AS max_order_date FROM 오더데이터)
SELECT customer_id
FROM 오더데이터
--- 오더 데이터에서 고객id를 구함
SELECT *
FROM 고객데이터
WHERE customer_id IN (SELECT customer_id FROM 오더데이터)
지역 별 일별 판매량 구하기
지역 별 일별 판매량 평균 구하기
SELECT U.지역, O.주문일, SUM(판매량) AS 일별판매량
FROM 오더데이터 O
LEFT JOIN 고객데이터 U
ON O.custmer_id = U.customer_id
GROUP BY U.지역,O.주문일
--- 지역 별 일별 판매량
SELECT state, AVG(일별판매량) AS 평균판매량
**FROM**(
****SELECT U.지역, O.주문일, SUM(판매량) AS 일별판매량
FROM 오더데이터 O
LEFT JOIN 고객데이터 U
ON O.custmer_id = U.customer_id
GROUP BY U.지역,O.주문일
**)**
GROUP BY 지역
WITH
써브쿼리에 이름을 붙여 임시테이블로 만들어 준다고 생각하면 편함
WITH 임시테이블이름 AS
(
서브쿼리
)
SELECT *
FROM 임시테이블 ......
WITH vs SUBQUERY
Subquery 결과가 값이나 컬럼 한개일 때 → 그대로
Subquery 가 길어지고 복잡해지면 → WITH
한 Query 에서 같은 Subquery가 여러번 반복되면 → WITH
→ subquery도 query이기 때문에 많이 반복하면 연산이 많아 성능 저하가 올 수 있음...
에러 메시지 ??!?
공식 문서를 보는법, 스택오버플로우를 보는법 등을 알려주셨다.... 정말 초보를 위한 강의구나 !