SQL

SQL 2주차 단어/문법 정리

Sehe_e 2023. 2. 26. 04:07

 

 

 

데이터 분석의 목적

: 데이터베이스에 쌓여있는 날것의 데이터 > 의미를 갖는 '정보'로의 변환

 

 

'범주 (Category)'별로 분리도 가능

EX) 과목별, 성씨별 등

 

 


- 통계 구하기 -

 

 

 

Group by 절

: 동일한 범주의 데이터를 묶어서, 범주별 통계를 내줌

 

select (범주별로 세어주고 싶은 필드명), count(*) from 테이블명
group by (범주별로 세어주고 싶은 필드명)

 

 

 - 성씨별 회원수를 Group by로 쉽게 구해보기 -

 

select name, count(*) from users
group by name

1) users 테이블에서 데이터를 불러온다.

2) name 필드에서 동일한 값을 갖는 데이터를 하나로 합쳐준다.

3) name, count(*)(=데이터의 수를 합친 값)를 출력한다.

 

 

> 결과값

 


 

groud by

- Min

: 동일한 필드에서 최솟값 구하기

 

select (범주가 담긴 필드명), min(최솟값을 알고 싶은 필드명) from 테이블명
group by (범주가 담긴 필드명)

 

 

 - 주차별 'week'의 좋아요 최솟값 구하기 -

 

select week, min(likes) from checkins
group by week;

 

> 결과값

 


 

groud by

- Max

: 동일한 필드에서 최댓값 구하기

 

select 범주가 담긴 필드명, max(최댓값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;

 

 

 - 주차별 'week'의 좋아요 최댓값 구하기 -

 

select week, max(likes) from checkins
group by week;

 

> 결과값

 


 

groud by

- Avg

: 동일한 필드에서 평균값 구하기

 

select 범주가 담긴 필드명, avg(평균값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;

 

 

 - 주차별 'week'의 좋아요 평균값 구하기 -

 

select week, avg(likes) from checkins
group by week;

 

> 결과값

 


 

groud by

- Sum

: 동일한 필드에서 합계 구하기

 

select 범주가 담긴 필드명, sum(합계를 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;

 

 

 - 주차별 'week'의 좋아요 합계 구하기 -

 

select week, sum(likes) from checkins
group by week;

 

> 결과값

 


 

Order by

: 선택한 필드의 데이터를 정렬해준다

 

select * from 테이블명
order by 정렬의 기준이 될 필드명;

+) 기본적으로 오름차순 정렬

 

 

 - 성씨별 회원수를 Order by로 정렬하기 -

 

select name, count(*) from users
group by name
order by count(*) desc

+) desc : 내림차순으로 정렬

 

> 결과값

 

 


 

 

+) Where + Group by + Order by 함께 사용해보기

 

1) order 테이블에서 course_title = "웹개발 종합반"을 조회

2) payment_method를 카테고리화

3) payment_method별 주문건수를 Count

 

select payment_method, count(*) from orders
where course_title = "웹개발 종합반"
group by payment_method;

 

> 결과값

 

 


- SQL 쿼리가 실행되는 순서 -

 

 

- 쿼리 진행 순서 -

 

select payment_method, count(*) from orders
where course_title = "웹개발 종합반"
group by payment_method;

: from > where > group by > select

 

+) order by가 추가된다면, order by제일 나중에 실행됩니다!

    : 정렬이기 때문에

 

 


- 이 외 유용한 문법 -

 

 

Alias

: 별칭 기능, 약자 / as

 

 

 - 테이블 명 뒤에 Alias 추가 -

 

select * from orders o
where o.course_title = '앱개발 종합반'

 

 

 - 출력될 필드에 Alias 추가 -

 

select payment_method, count(*) as cnt from orders o
where o.course_title = '앱개발 종합반'
group by payment_method

+) as를 붙인 뒤 변경할 필드명을 붙여줘야 한다.

 

> 결과값

 

 


- 복습하기 -

 

 

 

 [ Group by ]

 - 앱개발 종합반의 결제수단별 주문건수 세어보기 -

 

SELECT payment_method, count(*) as cnt from orders
where course_title = '앱개발 종합반'
group by payment_method

 

 

 

 

 [ Group by ]

 - Gmail을 사용하는 성씨별 회원수 세어보기 -

 

SELECT name, count(*) as cnt from users
where email like '%gmail.com'
group by name

 

 

 

 

 [ Group by ]

 - course_id별 '오늘의 다짐'에 달린 평균 like 개수 구해보기 -

 

SELECT course_id, avg(likes) from checkins
group by course_id

 


 

 [ Order by ]

 - 문자열 기준으로 정렬 -

 

 

> 영어

select * from users
order by email;

 

 

-

> 한글

select * from users
order by email;

 

 

 

 

  [ Order by ]

 - 시간 기준으로 정렬 -

 

select * from users
order by created_at desc

+) 최근 데이터부터 보고싶을 때 유용함

 

> 결과값