SQL 심화...
날짜, 시간
- DATE : 년-월-일
- TIME :시간:분:초
- DATETIME : 년-월-일 시간:분:초
- TIMESTAMP 년-월-일 시간:분:초 UTC
UTC : 시간대(타임존)
문자
를 날짜
로
- 'YYYY-MM-DD' 의 형식이라면
- DATE(컬럼)
- 그 외의 형식이라면
-
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, 단위)
- 컬럼1이 더 최근이어야함 (컬럼1 - 컬럼2)
- 단위 (YEAR,MONTH,DAY...)
-
CASE WHEN
- 엑셀의 IF와 비슷함...
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이기 때문에 많이 반복하면 연산이 많아 성능 저하가 올 수 있음...
-
조금 더 생각해보기...
에러 메시지 ??!?
- 컴퓨터는 잘못이 없어용
- 구글에게 물어보세용
공식 문서를 보는법, 스택오버플로우를 보는법 등을 알려주셨다.... 정말 초보를 위한 강의구나 !
Author And Source
이 문제에 관하여(SQL 심화...), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@joonfly/SQL-심화저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)