1. Group by란
동일한 범주(Category)를 갖는 데이터를 하나로 묶어서 범주별 통계를 내주는것을 의미 한다.
Group by를 사용하면 같은 데이터를 하나로 묶고 각각의 데이터의 갯수를 구할 수 있다.
예 ) select name, count(*) from table
group by name;
table에서 동일한 name을 갖는 데이터를 묶고 각각의 name의 데이터 숫자를 구한다는 쿼리
위 쿼리가 실행되는 순서: from → group by → select
from table을 통해서 테이블 전체 데이터를 가져오고 group by name 를 사용하여 동일한 name을 갖는 데이터를 합쳐줍니다. select name, count(*): name에 따라 합쳐진 데이터가 각각 몇 개가 합쳐진 것인지 세어줍니다.
2. 동일한 범주에서 특정 테이블의 최소값 구하기
select name, min(likes) from table
group by name;
name 테이블 범주별로 구분하고 각범주에서에서 최소인 likes값을 구하여라
3.동일한 범주에서 특정 테이블의 최대값 구하기
select name, max(likes) from table
group by name;
name 테이블 범주별로 구분하고 각범주에서에서 최대인 likes값을 구하여라
4.동일한 범주에서 특정 테이블의 최대값 구하기
select name, avg(likes) from table
group by name;
name 테이블 범주별로 구분하고 각범주에서에서 likes의 평균값을 구하여라
소수점으로 보기 불편할때 round를 사용하여 소수점 n자리까지 구할 수 있다.
예) select name, round(avg(likes), 2)from table
group by name;
like의 평균값을 소수점 2째자리 까지 한다.
4.동일한 범주에서 특정 테이블의 총합 구하기
select name, sum(likes) from table
group by name;
name 테이블 범주별로 구분하고 각범주에서에서 likes의 총합을 구하여라
5. order by
order by를 사용하면 오름 차순 또는 내림차순으로 데이터를 정렬할 수 있다.
select name, count(*) from table
group by name;
order by count(*) ; 오름 차순이 기본이고 내림 차순으로 정렬하고 싶다면 desc를 사용하면 된다.
6. where를 사용하여 원하는 조건으로 데이터를 구분하여 정렬까지 할 수 있다.
select payment_method, count(*) from table
where name = "이름" ;
group by payment_method;
order by count(*) ;
table에서 name 필드가 "이름"인것중 각각의 payment_method 를 세어보고 그 순서를 오름차순으로 정렬 하라는 의미
실행 순서 !!
from → group by → select → order by
1) show tables로 어떤 테이블이 있는지 살펴보기
2) 제일 원하는 정보가 있을 것 같은 테이블에 select * from 테이블명 limit 10 쿼리 날려보기
3) 원하는 정보가 없으면 다른 테이블에도 2)를 해보기
4) 테이블을 찾았다! 범주를 나눠서 보고싶은 필드를 찾기
5) 범주별로 통계를 보고싶은 필드를 찾기
6) SQL 쿼리 작성하기!
여러 테이블을 연결해보기 (0) | 2022.11.10 |
---|---|
쿼리문 (select, where) (0) | 2022.11.07 |
DB와 SQL (0) | 2022.11.07 |