GROUP BY
절의 WHERE
절GROUP BY
절 없이도 사용이 가능하며, 이때 HAVING
절의 범위는 전체그룹이다.💡 단일 행 서브쿼리는 다중 행 서브쿼리의 비교 연산자를 사용할 수 있다.
다중 행 서브쿼리는 단일 행 서브쿼리의 비교 연산자를 사용할 수 없다.
메인쿼리의 결과가 서브쿼리에 제공될 수도 있고, 서브쿼리의 결과가 메인쿼리로 제공될 수도 있으므로 실행 순서는 상황에 따라 달라진다.
UPDATE
문을 사용할 때는 UPDATE 대상이 되는 데이터의 범위를 WHERE
절에 지정해줘야 한다.
ROLLUP
, CUBE
, GROUPING SETS
함수는 모두 일반 그룹함수로 동일결과를 추출할 수 있다.NULL
을 반환한다.ROLLUP
(컬럼명) : 기준 컬럼의 총합, 컬럼 순서에 따라 결과가 달라진다.
GROUP BY ROLLUP(C1, C2) =
GROUP BY C1, C2
UNION ALL
GROUP BY C1
UNION ALL
모든 집합의 결과
GROUP BY CUBE(C1, C2) =
GROUP BY C1, C2
UNION ALL
GROUP BY C1
UNION ALL
GROUP BY C2
UNION ALL
모든 집합의 결과
SELECT C1, C2, SUM(C3)
FROM A
GROUP BY GROUPING SETS(C1, C2) =
SELECT C1, C2, SUM(C3)
FROM A
GROUP BY C1
UNION ALL
SELECT C1, C2, SUM(C3)
UNION ALL
FROM A
GROUP BY C2
UNION ALL
모든 집합의 결과
ROLLUP, CUBE, GROUPING SETS으로 생성된 ROW는
GROUPING(컬럼) = 1
이 된다.
RANK() OVER(RANK의 기준)
EX)
1. RANK() OVER(ORDER BY 추천점수 DESC)
: 추천점수가 높은 순대로 순위를 매김
2. RANK() OVER(PARTITION BY 추천경로 ORDER BY 추천점수 DESC)
: 추천경로 별로 추천점수가 높은 순대로 순위를 매김
: 함수에 대상이 되는 행 기분의 범위를 지정(SQL Server X)
RANGE BETWEEN A
AND B
형식으로 사용한다.
RANGE BETWEEN 1 PRECEDING AND 1 FOLLOWING
현재 행의 -1부터 현재 행의 +1까지라는 의미
PRAGMA AUTONOMOUS_TRANSACTION
을 선언하여 자율 트랜잭션 처리를 할 수 있다.EXECUTE IMMEDIATE "문자열쿼리" : PL/SQL에서 쿼리를 실행하기 위해 사용하는 문장