본문 바로가기
SQL

[스파르타 코딩 클럽] SQL 강의 DAY2 : GROUP BY와 ORDER BY

by Hustlera 2023. 1. 8.

 

어느새 2일차 바로 시작해보자

 

데이터 분석의 목적

: 쌓여있는 날것의 데이터를 의미가 있는 '정보'로 변환

DB 테이블에 저장된 데이터 =  날것의 데이터

가장 많은 like를 받은 사람의 이름, 전체 신청자 수 , 평균 연령 = 의미있는 '정보'

 

*통계 : 최대 / 최소 / 평균 / 개수

1. GROUP BY 

GROUP BY라는 문법은 동일한 범주(category)를 갖는 데이터를 하나로 묶어서, 범주별로 통계를 내주는 것을 의미

1)같은 성씨의 데이터를 하나로 묶고 

2) 각 성씨의 회원수를 구할 수 있다.

 

개수와 최솟값, 최댓값

select 범주별로 세어주고 싶은 필드명, count(*) from 테이블명
group by 범주별로 세어주고 싶은 필드명;
#최솟값 구하기
select 범주가 담긴 필드명, min(최솟값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;

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

 

평균 구하기

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

 

 소수점 자리 자르기 : round 문법

 

통계를 내다보면 위 결과값처럼 소수점 자리가 일정하지 않게 도출되는 경우가 많을 경우 round 문법을 통해 절삭되는 소수점 자리를 지정할 수 있다.

SELECT week, round(avg(likes),2) FROM checkins c 
group by week

avg문법을 사용하면 2.xxxx로 네자리가 표시된다.

 

round문법을 써주고 괄호옆에 숫자를 적어주면 내가 적은 수 만큼 소숫점 뒷 자리가 표시된다.

 

 

2. ORDER BY

order by 문법은 깔끔하게 데이터를 정렬하기 위해 사용하는 문법이다.

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

#내림차순으로 정렬하기
select name, count(*) from users
group by name
order by count(*) desc

count를 기준으로 정렬해달라는 뜻...!

뒤에 desc를 붙이면 내림차순으로 정렬된다.

 

숫자 뿐만 아니라 문자열도 순서대로 정렬이 가능함.

한글, 영어 모두 가능!

 

3. Alias 와 as

Alias는 코드에 별칭을 달아주는 기능 자세한 건 다음 주에 강의

 

as는 위 예시처럼 count된 컬럼명을 '수량' 으로 붙여 추출하는 문법이다.

 

---

오늘의 주요 문법

1. GROUP BY : 동일한 범주(카테고리)를별로 통계를 내줌

1-1. AVG(필드명) : 평균

1-2 MIN(필드명) : 최솟값

1-3 MAX(필드명) : 최댓값

1-4 SUM(필드명) : 합계

+ round(avg(필드명)반올림할 숫자) : 반올림

 

2. ORDER BY : 데이터를 기준에 따라 정렬할  수 있음

2-1 order by desc (정렬할 데이터 명) : 내림차순으로 정렬

 

etc

- alias

- as