티스토리 뷰
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
'SQL' 카테고리의 다른 글
SQL 4주차 개발일지 (0) | 2022.09.03 |
---|---|
SQL 3주차 개발일지 (0) | 2022.09.03 |
SQL 1주차 개발일지 (0) | 2022.08.18 |