Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 멋사
- GIS
- Python
- 마이온컴퍼니
- DP
- DFS
- 마이온
- 인턴10
- 그리디
- 멋쟁이사자처럼
- 프로젝트
- Plotly
- 알고리즘
- SQL
- TiL
- 멋쟁이사자처럼멋쟁이사자처럼
- intern10
- folium
- Join
- 시각화
- likelionlikelion
- likelion
- 파이썬
- seaborn
- 멋재이사자처럼
- ux·ui디자인
- parklab
- pyhton
- GNN
- BFS
Archives
- Today
- Total
지금은마라톤중
멋사 AI스쿨_SQL_TIL (5) 본문
2023.01.27
집합
● UNION(합집합)
- 두 집합을 합하는 것을 반환
• all : 중복 값을 포함한 모든 결과 확인
select * from `weniv.weniv_user` as user1
UNION ALL
select * from `weniv.weniv_user3` as user3
• distinct : 중복 값을 제거한 모든 결과 확인
select * from `weniv.weniv_user` as user1
UNION DISTINCT
select * from `weniv.weniv_user3` as user3
● INTERSECT(교집합)
- 두 집합 모두에 나타나는 것만 반환
select * from `weniv.weniv_user` as user1
INTERSECT DISTINCT
select * from `weniv.weniv_user3` as user3
● EXCEPT(차집합, A-B)
- A 집합에서 B 집합을 뺀 것을 나타냄
select * from `weniv.weniv_user` as user1
except DISTINCT
select * from `weniv.weniv_user3` as user3
서브쿼리와 WITH
● 서브쿼리(Sub Query)
- 다른 SQL문 안에 중첩된 SELECT 문
- select 절, from 절, where 절 등에서 사용 가능
# from 절에 사용한 예시
select id,
a.first_name,
a.last_name,
b.order_count as order_count
from `thelook_ecommerce.users` a
left join (
select user_id, count(order_id) as order_count
from `thelook_ecommerce.orders`
group by user_id
) b on a.id = b.user_id
order by a.id
limit 10;
● WITH (Common Table Expressions)
- 쿼리 내에서 임시 결과를 정의하고 사용
- 주요 사용 목적은 복잡한 추출 과정을 분할하여 단계적으로 처리하면서 전체 데이터 추출과정을 단순화시키는 것
- 표현식 : WITH CTE명 AS ( 쿼리 표현식 )
* CTE(유사 테이블)
• 회원수가 4000명 이상인 국가명과 국가의 회원수
-> 회원수가 4000명 이상인 국가명과 회원수를 나타내는 임시 테이블를 with로 정의하고 메인 from 절에서 불러온다.
WITH user_counts AS (
select
country,
count(id) as user_count
from `thelook_ecommerce.users`
group by country
having count(id)>=4000
)
select * from user_counts;
• 유사테이블 2개 이상을 만들 때는 , 로 구분한다.
WITH user_order_counts AS (
select user_id, count(order_id) as order_count
from `thelook_ecommerce.orders`
group by user_id
), user_event_counts AS (
select user_id, count(id) as event_count
from `thelook_ecommerce.events`
group by user_id
)
select
a.id,
a.first_name,
a.last_name,
b.order_count,
c.event_count
from `thelook_ecommerce.users` a
left join user_order_counts b on a.id = b.user_id
left join user_event_counts c on a.id = c.user_id
order by b.order_count DESC, c.event_count DESC
'멋쟁이사자처럼 > SQL' 카테고리의 다른 글
멋사 AI스쿨_SQL_TIL (6) (0) | 2023.02.07 |
---|---|
멋사 AI스쿨_SQL_TIL (4) (0) | 2023.02.02 |
멋사 AI스쿨_SQL_TIL (3) (0) | 2023.01.25 |
멋사 AI스쿨_SQL_TIL (2) (0) | 2023.01.20 |
멋사 AI스쿨_SQL_TIL (1) (4) | 2023.01.13 |
Comments