[모든 컬럼 추출하기]
select *
from (파일명)
ctrl+enter를 누르면 실행됨
[특정 컬럼 추출하기]
select category, yyyy, mm
from (파일명)
[중복값 없이 특정 컬럼 추출하기]
select distinct category
form (파일명)
select distinct yyyy, mm
from (파일명)
[특정 연도의 매출 탐색: where]
1) 숫자열
select *
from gmv_trend
where yyyy = 2021
where yyyy >= 2019
where yyyy between 2018 and 2020
where yyyy != 2021
where yyyy <> 2021 ->같지 않음(!=와 같은 역할)
1) 문자열 (=, !=, like, in, not in)
select *
from gmv_trend
where category = '컴퓨터 및 주변기기'
where category in ('컴퓨터 및 주변기기', '생활용품')
where category not in ('컴퓨터 및 주변기기', '생활용품')
where category like '%패션%'
where category not like '%패션%'
cf) 조건이 여러 개일 때
a) and 조건
b) or 조건
c) and, or 조건 혼용 -> 의미 단위로 ()묶기
select *
from gmv_trend
where (gmv > 100000 or gmv < 10000) and yyyy=2021
[카테고리별 매출 분석: group by]
1) 카테고리별, 연도별 매출
select category, yyy, sum(gmv)
from gmv_trend
group by category, yyyy
2) 전체 총합
select category, yyyy, sum(gmv) as total_gmv
from gmv_trend
group by 1, 2
(첫번째 열과 두번째 열): 집계함수를 사용하지 않은 항목은 다 포함되어야 함
cf) 집계함수의 종류
sum
min
max
avg
ex) group by + where 예시
select category, yyyy, sum(gmv) as gmv
from gmv_trend
where category = '컴퓨터 및 주변기기'
group by 1,2
[매출이 높은 주요 카테고리만 확인하기: having]
select category, sum(gmv) as gmv
from gmv_trend
where yyyy = 2020
group by 1
having sum(gmv) >= 10000000
ex) where절이랑 같이 쓰기
where: 집계 전 데이터를 필터링
having: 집계 후 데이터를 필터링
where 절에는 집계함수가 올 수 없고
having 절에는 집계함수만 올 수 있다.
[매출이 높은 순으로 카테고리 정렬하기: order]
select *
from gmv_trend
order by category, yyyy, mm, platform_type
select category, sum(gmv) as gmv
from gmv_trend
group by 1
order by gmv
ex) 내림차순
select category, sum(gmv) as gmv
from gmv_trend
group by 1
order by gmv desc
select category, yyyy, sum(gmv)
form gmv_trend
group by 1,2
order by 1,3 desc
cf) 복수의 컬럼으로 정렬
select yyyy, mm, sum(gmv) as gmv
from gmv_trend
group by 1,2
order by 1 decs, 2 decs
cf) select 절에 없는 컬럼으로 정렬 가능할까? -> 불가능
select yyyy, mm, sum(gmv) as gmv
from gmv_trend
group by yyyy
order by category
order by에 -> select 절에 없는 것을 입력하면 오류가 뜸
[하나의 쿼리의 기본적인 순서]
select [컬럼명]
from [테이블명]
where [조건절]
group by [컬럼명 or 컬럼순서]
having [집계함수 조건절]
order by [컬럼명 or 컬럼순서]
limit [N]: 행수가 굉장히 클 때, 행을 줄여서 보는 방법
#select절에서 가장 많이 하는 실수
컬럼명을 새로 명명할 경우 띄어쓰기, 숫자로 시작하는 단어, 특수문자가 포함된 단어는 올 수 없다.
ex) cate gory, 2021_gmv, #mm
이때, “”를 사용하면 가능하다
ex) “cate gory”, “2021_gmv”, “#mm”
#where절 조건 총정리
긍정: =
부정: !=, <>
대소 조건: <,>,<=,>=
범위 조건: between ~ and ~, not between ~ and b
다수의 값 일치 / 불일치 조건: in (~,~,~) / not in (~,~,~)
특정문자열 포함 / 불포함 조건: like '%~%' / not like '%~%'
null값 포함 / 제외 조건: is null / is not null
#where절 주의사항
where절에 and와 or을 함께 쓸 때는, 반드시 ()로 의미 단위끼리 묶는다.
ex) where절 오류
select *
from gmv_trend
where sum(gmv) >= 100
#group by절에서 가장 많이 하는 실수
select 절에 등장한 컬럼이 group by에 모두 명시되지 않는 경우!
집계함수 빼고는 모두 group by에 명시하자!
집계함수 앞의 컬럼을 추가하거나 뺄 때 group by절도 같이 수정해주는 것을 잊지 않는다!
#having 절에서 주의사항
where: 집계 전 데이터를 필터링
having: 집계 후 데이터를 필터링
where 절에는 집계함수가 올 수 없고
having 절에는 집계함수만 올 수 있다.
ex) having절 오류
select category, sum(gmv) as gmv
from gmv_trend
group by 1
having gmv >= 100
'AI > 데이터 사이언스' 카테고리의 다른 글
[220908] SQL(postgres) 기초 2 (0) | 2022.09.08 |
---|