반응형
SMALL
--실습 1) 거래액 데이터 분석
--2017년부터 2021년 3월까지의 전자상거래 추정거래액 (단위 : 백만원)
--내 회사의 거래액 데이터라고 생각해도 됨
--1) 데이터 탐색--------------------------------------------------------------
--STEP 1) 모든 컬럼 추출하기
select *
from gmv_trend gt
;
--STEP 2) 특정 컬럼 추출하기
select yyyy,mm,gmv
from gmv_trend gt
;
--STEP 3) 중복값 없이 특정 컬럼 추출하기
select distinct yyyy,gmv
from gmv_trend gt
;
--2) 특정 연도의 매출 탐색--------------------------------------------------------------
select category,yyyy
from gmv_trend gt
where yyyy between 2018 and 2020
;
--where yyyy >= 2018
--2-1) 조건이 하나일 때 More Example
------a) 숫자열 (between, 대소비교)
select *
from gmv_trend gt
where yyyy between 2016 and 2020
;
select *
from gmv_trend gt
where yyyy >= 2018
;
select *
from gmv_trend gt
where yyyy != 2020
;
select *
from gmv_trend gt
where yyyy <> 2020
;
------b) 문자열 (=, !=, like, in, not in)
select *
from gmv_trend gt
where category = '컴퓨터 및 주변기기'
;
select *
from gmv_trend
where category in ('컴퓨터 및 주변기기','생활용품')
--2개 이상은 in으로 연결
;
select *
from gmv_trend
where category not in ('컴퓨터 및 주변기기','생활용품')
;
select*
from gmv_trend gt
where category like '%패션%'
;
select*
from gmv_trend gt
where category like '%패션%'
;
--2-2) 조건이 여러개일 때--------------------------------------------------------------
------a) and 조건
select *
from gmv_trend gt
where category = '컴퓨터 및 주변기기' and yyyy = 2017
;
select *
from gmv_trend gt
where category = '컴퓨터 및 주변기기' and yyyy = '2017'
;
select *
from gmv_trend gt
where gmv > 1000000 or gmv < 10000
;
select *
from gmv_trend gt
where (gmv > 1000000 or gmv < 10000) and yyyy = 2021
;
--or and 혼합 사용시 구분 괄호 표시
--3) 카테고리별 매출 분석--------------------------------------------------------------
--More Example) 카테고리별, 연도별 매출
select category ,yyyy , sum(gmv)
from gmv_trend gt
group by category ,yyyy
--집계함수 이외의 컬럼을 모두 group by
;
select distinct (category), yyyy, sum(gmv)
from gmv_trend gt
where category in ('서적','신발')
group by category , yyyy -- 1,2
;
select distinct (category), yyyy, sum(gmv)
from gmv_trend gt
where category in ('서적','신발')
group by 1,2
--집계 함수는 보통 마지막에 넣고 group by 집계함수 전까지 숫자 처리
;
--category 중복값 제외, 서적, 신발만의 gmv 합계
select distinct category , sum(gmv)
from gmv_trend gt
where category in ('서적','신발')
group by category
;
--More Example) 전체 총합
select sum(gmv) as gmv, max(yyyy), min(yyyy), avg(gmv)
from gmv_trend
--전체를 집계할때 group by X, where시 group by 기억.
;
--More Example) 집계함수의 종류
sum,min,max,avg
--group by + where 예시
select category, yyyy , sum(gmv)
from gmv_trend gt
where category = '컴퓨터 및 주변기기'
group by 1,2
order by yyyy desc
--4)매출이 높은 주요 카테고리만 확인하기--------------------------------------------------------------
select category, sum(gmv) as gmv
from gmv_trend gt
group by 1
having sum(gmv)>=100000000
order by gmv desc
select category, sum(gmv) as gmv
from gmv_trend gt
where sum(gmv) >= 10000000
group by 1
order by gmv desc
--집계함수는 where절에서 사용 불가, 집계함수는 having절에서만 가능
--More Example) where절이랑 같이 쓰기
select category, sum(gmv) as gmv
from gmv_trend gt
where yyyy = 2020
group by 1
having sum(gmv) >= 10000000
order by gmv desc
;
--5) 매출이 높은 순으로 카테고리 정렬하기--------------------------------------------------------------
--내림차순 Example
select category ,sum(gmv) as gmv
from gmv_trend gt
group by 1
order by gmv desc
;
select *
from gmv_trend gt
order by category ,yyyy ,mm desc, platform_type (1,2,3 desc,4 )
;
select category ,yyyy ,sum(gmv) as gmv
from gmv_trend gt
group by 1,2
order by 1,2(1,3 desc)
--[추가 예제 1] 복수의 컬럼으로 정렬
select yyyy,mm,sum(gmv) as gmv
from gmv_trend gt2
group by 1,2
order by 3 desc
--[추가 예제 2] select 절에 없는 컬럼으로 정렬 가능할까? -> 불가능
select category, sum(gmv) as gmv
from gmv_trend gt
where sum(gmv) >= 10000000
group by 1
order by gmv desc
-- 위 문장은 틀린 문장 집계함수는 where절에서 사용 불가, 집계함수는 having절에서만 가능
--haveing절은 집계 후 데이터를 필터링 하기 때문에 집계함수만 가능
--where절은 집계 전 데이터를 필터링 하기 때문에 집계함수 X
select category, sum(gmv) as gmv
from gmv_trend gt
group by 1
having sum(gmv) >= 10000000
order by gmv desc
-- 위 문장이 맞는 문장 group by 절 밑에 having절 입력
-- where gmv >= 100000000 불가능
집계함수 사용시 ex) select a, b, sum(c) as c
select 집계함수 전까지 group by 설정 ex) group by 1,2 or group by a,b
반응형
LIST
'SQL > SQL Note' 카테고리의 다른 글
count(*), count(age) (0) | 2023.08.17 |
---|---|
LIKE '%~%', Group by (0) | 2023.08.17 |
조회 조건, count 조건, hour, null (2) | 2023.08.17 |
SQL실행 순서, select 컬럼명, where 절 조건 (0) | 2023.08.17 |
SQL join 기본 (0) | 2023.08.16 |