통계적활용
최대 최소 평균 갯수
의미를 갖는 정보로 변환
group by 그룹핑
order by 정렬
성씨로 그룹핑하고 카운트 하고싶을 경우
select name,count(*) from users
group by name
쿼리쓰는 순서
1.그룹핑
select from users
group by name
2.정렬항목과 원하는 결과(이름과 갯수)
select name, count() from users
검증
select * from users
where name = '신**'
위 쿼리가 실행되는 순서: from → group by → select
group by기능
1.min
select 범주가 담긴 필드명, min(최소값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;
2.max
select 범주가 담긴 필드명, max(최대값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;
3.avg
select 범주가 담긴 필드명, avg(평균값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;
4.sum
select 범주가 담긴 필드명, sum(합계를 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;
order by
select * from 테이블명
order by 정렬의 기준이 될 필드명;
올림순 asc(생략가능)
내림순 desc
select name, count() from users
group by name
order by count();
위 쿼리가 실행되는 순서: from → group by → select → order by
where와 함께 사용하기
1. orders 테이블에서 주문 데이터를 읽어오고
2. 웹개발 종합반 데이터만 남기고
3. 결제수단(범주) 별로 그룹화하고
4. 결제수단별 주문건수를 세어준다!
select payment_method, count() from orders
where course_title = "웹개발 종합반"
group by payment_method;
위 쿼리가 실행되는 순서: from → where → group by → select
1. from orders: users 테이블 데이터 전체를 가져옵니다.
2. where course_title = "웹개발 종합반": 웹개발 종합반 데이터만 남겨줍니다.
3. group by payment_method: 같은 payment_method을 갖는 데이터를 합쳐줍니다.
4. select payment_method, count(): payment_method에 따라 합쳐진 데이터가 각각 몇 개가 합쳐진 것인지 세어줍니다.
예) CARD, CARD, kakaopay 이렇게 데이터가 있었다면, CARD는 2개, kakaopay는 1개겠죠!
만약 order by가 추가된다면? order by는 맨 나중에 실행됩니다! (결과물을 정렬해주는 것이기 때문!)
자주하는 실수
보고싶은 결과가 무엇인가?
그룹바이 뒤에 적은 필드명은 셀렉트 뒤에도 써준다
1) show tables로 어떤 테이블이 있는지 살펴보기
2) 제일 원하는 정보가 있을 것 같은 테이블에 select * from 테이블명 limit 10 쿼리 날려보기
3) 원하는 정보가 없으면 다른 테이블에도 2)를 해보기
4) 테이블을 찾았다! 범주를 나눠서 보고싶은 필드를 찾기
5) 범주별로 통계를 보고싶은 필드를 찾기
6) SQL 쿼리 작성하기!
Alias 별칭