일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- GA4
- 프로젝트
- 최종 프로젝트
- da
- data analyst
- 머신러닝
- SQL
- 프롬프트 엔지니어링
- If
- 히트맵
- SQLD
- 기초프로젝트
- 군집화
- pandas
- 팀프로젝트
- 크롤링
- 전처리
- Chat GPT
- 데이터분석
- 시각화
- 태블로
- 데이터 분석
- 클러스터링
- streamlit
- 서브쿼리
- Python
- lambda
- cross join
- 기초통계
- jd
- Today
- Total
세조목
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를 사용해봄으로써
성능을 개선시킬 수 있다.
'데이터 분석 공부 > SQL' 카테고리의 다른 글
SQL정리(max함수)(24.01.05)(업데이트 예정) (0) | 2024.01.05 |
---|---|
SQL 정리(개인과제 복습)(24.01.03) (1) | 2024.01.03 |
SQL 정리(STR_TO_DATE, SQL 실행 순서, 데이터 삭제)(23.12.29) (1) | 2023.12.30 |
SQL 정리(Join - cross, left)(leetcode - 1280. Students and Examinations)(23.12.28) (1) | 2023.12.27 |
SQL 정리(Cross Join)(23.12.26) (0) | 2023.12.26 |