통계: 최대 / 최소 / 평균 / 개수
- 데이터 분석의 목적은 쌓여있는 데이터를 의미를 갖는 '정보'로 변환하기 위한 것
- 더 나아가면 범주(category) 각각의 정보가 궁금할 수 있음
GROUP BY
- 동일한 범주의 데이터를 묶어주는 역할
- 동일한 범주를 갖는 데이터를 하나로 묶어, 범주별 통계를 내줌
ORDER BY
- 데이터를 정렬하는 기능
ex) 성씨별로 몇 명의 회원이 있는지 구하려면?
select name, count(*) from users group by name;
- 실행 순서: from → group by → select
select 범주별로 세고싶은 필드명, count(*) from 테이블명 group by 범주별로 세고싶은 필드명
- 범주별로 세고싶은 필드명을 select에 넣어주는 이유는 어떤 것을 count 했는지 나타내주기 위해서 (select해주지 않으면 보이지 않음)
- 개수 - count, 최소값 - min, 최대값 - max, 평균 - avg, 합계 - sum
select 필드명 from 테이블명 group by 필드명 order by 정렬 기준 필드명 desc;
- order by에 정렬하고 싶은 값을 넣어주면 됨
- 기본 설정은 오름차순(asc)이며 내림차순(desc) 설정 가능
- 실행 순서: from → group by → select → order by
select 필드명 from 테이블명 where 조건 group by 범주별로 세고싶은 필드명;
- from → where → group by → select (→ order by)
order by는 문자열, 시간도 기준으로 하여 정렬 가능
퀴즈1] A반의 결제수단별 주문건수 세기
select payment, count(*) from class where class_name = 'A' group by payment;
퀴즈2] kakao mail을 사용하는 이름별 회원수
select name, count(*) from user where email like "%@kakao" group by name;
퀴즈3] 코스별 평균 like의 개수 구하기
select course, avg(like) from class group by course;
1) show tables로 테이블 살펴보기
2) 원하는 정보가 있을 것 같은 테이블을 아래의 쿼리 작성해서 실행해보기select * from 테이블명 limit 10;
3) 원하는 정보가 없다면 다른 테이블에도 2) 적용해보기
4) 테이블을 찾았다면 범주를 나눠 보고싶은 필드 찾기
5) 범주별 통계를 보고싶은 필드 찾기
6) SQL 쿼리 작성하기
쿼리가 점점 길어지면 헷갈릴 수 있으므로 Alias라는 별칭 기능 사용
// 테이블명 뒤에 별칭 주기 select * from orders o where o.필드명 = 조건; // 출력될 필드 뒤에 as를 붙여 별칭 추가하기 select 필드명, 필드명 as hl from orders o where o.필드명 = 조건 group by 필드명;