728x90
데이터에서 무엇이 궁금할까 ?
- 데이터 분석 : 쌓여있는 날것의 데이터 => 의미를 갖는 '정보' 로의 변환
- 데이터 베이스 테이블에 저장된 데이터 : 쌓여있는 날것의 데이터
- ex) 가장 많은 Like를 받은 사람의 이름, 전체 신청자 수, 평균 연령 : 의미있는 '정보'
'범주 (category)' 각각의 정보가 궁금할 때
ex) 과목별 신청자 평균 연령, 과목별 신청자 수, 성씨별 회원 수 등
동일한 범주의 데이터를 묶어주는 Group by
Group by란?
동일한 범주를 갖는 데이터를 하나로 묶어서, 범주별 통계를 내주는 것
ex) 성씨별 회원수를 추출하라
SELECT name, COUNT(*) from users
group by name
규칙
select 범주별로 세어주고 싶은 필드명, count(*) from 테이블명
group by 범주별로 세어주고 싶은 필드명
최솟값, 최댓값, 평균, 합계
최솟값 : min(필드명)
select 범주가 담긴 필드명, min(최솟값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명
ex) 주차별 '오늘의 다짐'의 좋아요 최솟값 구하기
SELECT week, min(likes) FROM checkins
group by week
최댓값 : max()
평균값 : avg()
합계 : sum()
위의 min() 대신 단어만 바꿔주면 됨.
또한 여러개 사용 가능
ex)
SELECT week, max(likes), avg(likes), sum(likes) FROM checkins
group by week
round() : 반올림 해주는 수식
평균값과 주로 함께 쓰인다.
round( 반올림할 대상, 구할 자릿수 )
생략 시 정수 부분만 표현
=> round(avg(likes), 2) => 2.23
ex)
SELECT week, round(avg(likes), 2) FROM checkins
group by week
Order by
데이터를 정렬할 때 사용
ex) 성씨별 회원 수 데이터를 오름차순으로 정렬
SELECT name, count(*) FROM users
group by name
order by count(*)
ex) 성씨별 회원 수 데이터를 내림차순으로 정렬 'desc' 뒤에 추가
SELECT name, count(*) FROM users
group by name
order by count(*) desc
규칙)
select * from 테이블명
order by 정렬의 기준이 될 필드명
Where, Group by, Order by 함께 사용해보기
Where절로 조건이 추가 => Group by로 나눈다 => Order by에 의해 정렬
ex) 웹개발 종합반의 결제수단별 주문건수를 내림차순으로 정렬하라.
SELECT payment_method, count(*) FROM orders
where course_title = '웹개발 종합반'
group by payment_method
order by count(*) DESC
728x90
'개발일지 > DataBase' 카테고리의 다른 글
Join (0) | 2022.07.02 |
---|---|
Alias (0) | 2022.07.02 |
Select 쿼리문, Where 절 연습하기 (0) | 2022.06.28 |
Limit, Distinct, Count (0) | 2022.06.27 |
!=, between, like, and (0) | 2022.06.27 |