1. from users users 테이블 데이터 전체를 가져온다. 2. group by name users 테이블 데이터에서 같은 name을 갖는 데이터를 합쳐준다. 3. select name, count(*) name에 따라 합쳐진 데이터가 각각 몇개가 합쳐진 것인지 세어준다.
동일한 범주 개수 구하기 count
select 범주별로 세어주고 싶은 필드명, count(*) from 테이블명
groupby 범주별로 세어주고 싶은 필드명;
-- 주차별 '오늘의 다짐' 개수 구하기
select week, count(*) from checkins
groupby week;
동일한 범주에서의 최솟값 구하기 min
select 범주가 담긴 필드명, min(최솟값을 알고 싶은 필드명) from 테이블명
groupby 범주가 담긴 필드명;
-- 주차별 '오늘의 다짐'의 좋아요 최솟값 구하기
select week, min(likes) from checkins
groupby week;
(1) 원하는 테이블 (2) 범주로 사용할 필드 (3) 범주에 따라 통계를 계산하고 싶은 필드 (1) checkins 테이블에서 (2) week (주차) 별로 (3) likes ('오늘의 다짐'의 좋아요 수) 의 최솟값을 구하기
동일한 범주에서의 최댓값 구하기 max
select 범주가 담긴 필드명, max(최댓값을 알고 싶은 필드명) from 테이블명
groupby 범주가 담긴 필드명;
-- 주차별 '오늘의 다짐'의 좋아요 최대값 구하기
select week, max(likes) from checkins
groupby week;
동일한 범주의 평균 구하기 avg
select 범주가 담긴 필드명, avg(평균값을 알고 싶은 필드명) from 테이블명
groupby 범주가 담긴 필드명;
-- 주차별 '오늘의 다짐'의 좋아요 평균값 구하기
select week, avg(likes) from checkins
groupby week;
반올림 해서 보이고 싶을 때는 round를 사용한다. round(x, digit) : x를 digit 자릿수까지 보이도록 반올림(digit + 1 자릿수에서 반올림)
select 범주가 담긴 필드명, round(avg(평균값을 알고 싶은 필드명), digit) from 테이블명
groupby 범주가 담긴 필드명;
동일한 범주의 합계 구하기 sum
select 범주가 담긴 필드명, sum(합계를 알고 싶은 필드명) from 테이블명
groupby 범주가 담긴 필드명;
-- 주차별 '오늘의 다짐'의 좋아요 합계 구하기
select week, sum(likes) from checkins
groupby week;
where과 같이 쓰기
-- Gmail 을 사용하는 성씨별 회원수 세어보기
select name, count(*) from users
where email like'%gmail.com'
groupby name;
쿼리 실행 순서: (1)from → (2)where → (3)group by → (4)select (1) email과 name 필드가 있는 users 테이블에서 데이터를 가져온다. (2) gmail을 사용하는 user 데이터만 가져온다. (3) users 테이블 데이터에서 같은 name을 갖는 데이터를 합쳐준다. (4) name에 따라 합쳐진 데이터가 각각 몇개가 합쳐진 것인지 세어준다. (name과 count 만 표기)
Order by
데이터를 정렬
숫자, 문자열, 알파벳, 시간 기준으로 모두 정렬 가능
-- 문자열 기준 정렬
-- 기본적으로 오름차순 정렬된다.
select*from users
orderby email;
-- 오름차순 정렬
select*from users
orderby email asc;
-- 내림차순 정렬
select*from users
orderby email desc;
group by 와 같이 쓰기
-- Gmail 을 사용하는 성씨별 회원수를 오름차순 정렬
select name, count(*) from users
where email like'%gmail.com'
groupby name
orderbycount(*);
쿼리 실행 순서: from → where → group by → select → order by
쿼리 작성 팁
(1) 원하는 테이블 (2) 범주로 사용할 필드 (3) 범주에 따라 통계를 계산하고 싶은 필드 세가지 기억하기
show tables로 어떤 테이블이 있는지 살펴본다.
제일 원하는 정보가 있을 것 같은 테이블에 < select * from 테이블명 limit 10 > 쿼리를 작성해 정보가 있는지 확인해본다.
원하는 정보가 없으면 다른 테이블에 2. 를 다시 해본다.
원하는 정보가 있는 테이블을 찾았으면 범주를 나뭐서 보고싶은 필드를 찾는다.
범주별로 통계를 보고싶은 필드를 찾는다.
쿼리 작성
Alias
쿼리가 길어지면 헷갈리는 일이 생기기 때문에 Alias 별칭 기능을 사용한다.
select*from orders o
where o.course_title ='앱개발 종합반'
select payment_method, count(*) as cnt from orders o