SQL 활용 부분 정리! 🫢🔔😎😊🤔😭
스칼라 서브쿼리
주로 SELECT 절에 위치하지만 컬럼이 올 수 있는 대부분 위치에 사용할 수 있다.
인라인 뷰
FROM 절 등 테이블명이 올 수 있는 위치에 사용 가능
중첩 서브쿼리
WHERE 절과 HAVING 절에 사용할 수 있다. 메인 쿼리랑 관계가 없으면 비연관 관계가 있으면 연관 서브쿼리이다.
UNION ALL - UNION - INTERSECT - MINUS/EXCEPT
ROLLUP - 그룹핑 후 총합을 나타내줌 인자 3개까지 앞에꺼가 마지막까지 나옴
CUBE - 뒤에꺼가 마지막까지 나옴
GROUPING SETS - 각각 아에 따로
ROLLUP 함수는 인수의 순서에 따라 결과가 달라지는데 CUBE 와 GROUPING SETS 함수는 인수의 순서가 바뀌어도 같은 결과를 출력한다.
GROUPING - 소계를 나타내는 Row를 구분할 수 있게 해줌
OVER 키워드와 함께 사용되며 역할에 따라 다음과 같이 나눌 수 있다.
순위함수 - 집계함수 - 행순서함수 - 비율함수
순위함수
RANK(6 7 7 7 10) - DENSE_RANK(6 7 7 7 8) - ROW_NUMBER(6 7 8 9 10)
EX) RANK() OVER(ORDER BY SALARY DESC) AS RANK
집계함수
SUM - ORDER BY절이 있으면 누적합으로 된다 RANGE UNBOUNDED PRECEDING 구문 없이도
MAX - MIN PARTITION BY 랑 같이 쓰임
AVG PARTITION BY 와 ROUND 랑 같이 쓰임
COUNT
OVER이랑 같이 쓰임!
FIRST_VALUE - LAST_VALUE - LAG (몇 만큼 위에 있는거) - LEAD ( 얼마만큼 밑에 있는거)
RATIO_TO_REPORT - PERCENT_RANK - CUME_DIST - NTILE
ROWNUM - 자동 1,2,3,4,5
WHERE 위치 주의! 마지막 줄 WHERE ROWNUM <= 5
윈도우 함수의 순위 함수
FROM 절에 같은 테이블이 두 번 이상 등장하기 때문에 혼란을 막기 위해 ALIAS를 반드시 표기해주어야 한다!
CONNECT BY - 부서 조직도, 메뉴 트리 등 계층적 구조를 만들 떄 사용하는 방법
특정 값만큼 행을 늘리거나 시작일자와 종료일자 사이의 날짜를 채워서 행을 늘리는 등의 가상의 데이터를 만들 때 유용하게 사용할 수 있다
ROWNUM <= 5