SQL 정리(With절, 컬럼 전체의 합, View, Explain)(24.01.02)
With절
With절은 서브쿼리를 본 쿼리 바깥으로 별도로 떼어놓는 다시 말해 가상의 테이블을 하나 더 만드는 절이라고 생각하면 된다.
with절의 구조는 아래와 같다.
# with절 1개일 경우
with 별명 as
(
select
from
where
...
)
select
from
where
...
# with절 2개 이상일 경우
with 별명 as
(
select
from
where
...
),
별명 as
(
select
from
where
...
),
별명 as
(
select
from
where
...
)
select
from
where
...
적다보니 한 눈에 들어오지 않는데
with 별명 as (쿼리), 별명 as(쿼리), 별명 as(쿼리)...
이런 구조를 가진다고 생각하면 된다.
with절을 만들어 놓으면 언제든 with절을 불러올 수 있고, 다른 테이블과 join해서 쓸 수도 있다.
with절과 관련된 함수로 with recursive함수가 있는데 해당 내용은 차후 조금 더 자세히 공부하고 포스팅할 예정이다.
컬럼 전체의 합
지금까지 쿼리문을 작성해오면서 항상 sum함수와같은 집계함수를 사용할 때
group by로 묶어준 후 집계했었다.
그런데 예제를 풀다보니 group by로 묶는 것이 아니라 컬럼 전체의 값을 구해야할 때가 있었다.
이럴 때는 group by를 쓰지 않고 select절에 집계함수를 쓰는 것이다.
다만 이 때는 집계함수 외 다른 컬럼은 함께 select 절에 입력할 수가 없다.
아래 오른쪽 이미지 하단의 빨간색 부분을 보면 group by가 있어야함을 알 수 있다.
View
View 역시도 앞서 살펴본 With와 마찬가지로 가상테이블을 생성시켜주는 함수다.
구조는 다음과 같다.
CREATE VIEW SalesSummary AS
SELECT Department, SUM(SaleAmount) AS TotalSales
FROM Sales
GROUP BY Department;
Create view 테이블명 as 를 입력해주고,
쿼리문을 적어주면 된다.
한 번 지정된 view명은 수정이 불가하기때문에 만약 view명을 바꾸고싶다면
view를 제거하고 다시 등록해야한다.
이 때 사용하는 함수가 drop view이다.
구조는 다음과 같다.
drop view 뷰이름
Explain
Explain 함수는 쿼리 실행 계획을 분석하고 성능을 평가하는 함수다.
쿼리문 맨 앞에 explain을 적어주고 쿼리를 돌리면
아래 이미지의 빨간색 부분과같이 각각의 쿼리문의 성능이 어떤지 확인할 수 있다.
이렇게 성능을 확인 후 성능이 좋지않은 쿼리문은 수정하거나, 인덱싱을하거나, view를 사용해봄으로써
성능을 개선시킬 수 있다.