Spark/SQL

[SQL] 기본

heheh 2021. 4. 1. 17:47

내부 처리 순서

where -> group by -> having -> select -> order by

 

- 전체 데이터프레임에서 행 정리한 다음에

 

- 묶고

 

- 묶은 데이터프레임에서 조건 걸어 다시 행 정리하고

 

- 출력할 열(컬럼) 정하고

 

- 순서 맞춰 출력

 

 

사용 함수

SELECT / FROM / WHRER / GROUP BY+HAVING / ORDER BY

 

COUNT / AVG / SUM / MIN / MAX / ROUND / +(문자열) / yyyy_mm_dd(날짜) 

 

DISTINCT / BETWEEN / AND / OR / CASE(WHEN,THEN,ELSE,END) / (서브쿼리)

 

FROM,INNER JOIN,ON / LEFT,RIGHT JOIN / JOIN / UNION / UNION ALL / EXCEPT / INTERSECT / CROSS JOIN / 

 

/ AS / IN / 테이블명.컬럼명

 

 

날짜자르기

velog.io/@workpand_a/SQL-%EB%82%A0%EC%A7%9C-%EB%85%84%EC%9B%94%EB%A1%9C-group-by%ED%95%98%EB%8A%94-%EC%97%AC%EB%9F%AC%EA%B0%80%EC%A7%80-%EB%B0%A9%EB%B2%95%EB%93%A4

 

순서매기기

row_number() + partition, orderby

docu94.tistory.com/72

count() + 도 가능

 

null 제외하기

WHERE NOT 컬럼 is NULL;

 

union 시

없는 컬럼엔 null로 데이터가 들어가서 작동하는듯.

array

cloud.google.com/bigquery/docs/reference/standard-sql/array_functions?hl=ko

 

IN

WHERE user_id  IN ('user1','user3')

(동일 WHERE user_id  = 'user1' OR user_id = 'user3')

IN 연산자에 다른 SELECT 문을 넣을 수 있다.

 

NOT

바로 뒤에 오는 조건을 부정하는 역할을 한다. 때문에 혼자서는 되지 않는다.

ex. WHERE NOT user_id  IN ('user1','user3')