본문 바로가기
AI/데이터 사이언스

[220901] SQL(postgres) 기초 1

by aiant 2022. 9. 1.

[모든 컬럼 추출하기]

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