티스토리 뷰

SQL

SQL 2주차 개발일지

김기지 2022. 8. 30. 21:25

2주차 주제 - 통계구하기

 

●통계 : 최대/최소/평균/갯수 구하기

-group by : 동일한 범주의 데이터를 묶음

-order by : 데이터를 깔끔하게 정렬

 

<group by>

ex) 사용자의 성씨별 인원수를 출력할 경우

select * from users에서 group by name으로 바로 출력하는 경우 오류가 발생한다.

이름별로 묶은 후 성씨와 수를 함께 출력해야하기 때문에

select name, count(*) from users

group by name

으로 입력한다.

 

ex) 주차별 '오늘의 다짐'의 갯수 구하기

select week, count(*) from checkins

group by week

 

여기서 갯수가 아닌 좋아요의 최솟값을 구하려면 min(likes), 최댓값은 max(likes)를 사용한다.

select week, min(likes)/ max(likes) from checkins

group by week

 

평균값을 구하는 경우엔 avg(likes)를 쓰면 되는데, 출력시 소수값이 길게 나오는 경우 round(avg(likes),2)를 이용하여 소수점 2번째 자리까지만 표시할 수 있다.

 

주차별 좋아요의 합계를 구할 시 sum(likes)를 넣어준다.

 

정리하자면

갯수를 구할 경우 count(*)

최대/최소/평균/합계를 구할 경우는 max/min/avg/sum (필드명) 을 쓴다.

 

<order by>

결과를 정렬하기 때문에 제일 마지막에 입력한다.

 

ex) 사용자의 성씨별 갯수를 오름차순으로 정렬하기

select name, count(*) from users

group by name

order by count(*) asc

뒤에 asc를 지워도 오름차순으로 정렬되기 때문에 안써줘도 된다.

 

내림차순으로 정렬할 경우 desc를 쓴다.

 

●where절과 함께 써보기

ex) 웹개발 종합반의 결제 수단별 주문건수 세어보기

1. select * from orders로 원하는 필드가 존재하는지 출력해본다

2. '웹개발 종합반'만 출력하기 위해 where course_title = '웹개발 종합반' 입력

3. 결제 수단별로 묶어준다. group by payment_method

4. 결제 수단과 갯수를 출력한다

 

→select payment_method, count(*) from orders

  where course_title = '웹개발 종합반'

  group by payment_method

 

 

728x90

'SQL' 카테고리의 다른 글

SQL 4주차 개발일지  (0) 2022.09.03
SQL 3주차 개발일지  (0) 2022.09.03
SQL 1주차 개발일지  (0) 2022.08.18