본문 바로가기

Development/SQL

SQL 기초_2

범주의 통계를 내주는 Group by

Group by란?

동일한 범주를 갖는 데이터를 하나로 묶어서 범주별 통계를 내준다.

원하는 필드의 데이터를 묶어서 개수를 셀수 있다.

select 필드명, count(*) from 테이블명
group by 필드명

 

Group by SQL 쿼리가 실행되는 순서

select 필드명, count(*) from 테이블명
group by 필드명;
  1. from 테이블명 : 지정한 테이블 데이터 전체를 가져온다.
  2. group by 필드명 : 지정한 테이블에서 원하는 필드의 테이터를 카테고리화하여 묶어준다.
  3. select 필드명, count(*) : 지정한 테이블, 필드에 데이터가 어떤 카테고리로 몇 개가 있는지 세어준다.

 

Group by 기능 알아보기

  • 동일한 범주의 개수 구하기
select 범주별로 세어주고 싶은 필드명, count(*) from 테이블명
group by 범주별로 세어주고 싶은 필드명;
  • 동일한 범주에서의 최소값 구하기
select 범주가 담긴 필드명, min(최솟값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;
  • 동일한 범주에서의 최대값 구하기
select 범주가 담긴 필드명, max(최댓값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;
  • 동일한 범주의 평균 구하기
select 범주가 담긴 필드명, avg(평균값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;
  • 동일한 범주의 합계 구하기
select 범주가 담긴 필드명, sum(합계를 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;

 

 

 

깔끔하게 정렬해주는 Oder by

원하는 테이블에 있는 데이터를 오름차순 또는 내림차순으로 정렬해준다.

오름차순으로 정렬을 원할 때는 필드명 뒤에 아무것도 쓰지 않거나 asc를 붙여주고,

내림차순 정렬을 원할 때는 필드명 뒤에 desc를 붙여주면 된다.

select * from 테이블명
order by 정렬의 기준이 될 필드명;

 

Oder by SQL 쿼리가 실행되는 순서

select 필드명, count(*) from 테이블명
group by 필드명
order by count(*);
  1. from 테이블명 : 테이블 전체 데이터를 가져온다.
  2. group by 필드명 :  지정된 테이블의 필드에서 같은 값을 갖는 데이터를 묶어준다.
  3. select 필드명, count(*) : 필드에서 묶인 데이터들의 개수를 세어준다.
  4. order by : 합쳐진 데이터의 개수에 따라 오름차순 정렬을 해준다.

 

쿼리 작성 팁

  1. show tables로 어떤 테이블이 있는지 살펴보기
  2. 제일 원하는 정보가 있을 것 같은 테이블에 select * from 테이블명 limit 10 쿼리 작성
  3. 원하는 정보가 업다면 다른 테이블에도 2번 실행
  4. 원하는 정보가 담긴 테이블을 찾았다면 범주를 나눠서 보고싶은 필드 찾기
  5. 범주별로 통계를 보고 싶은 필드 찾기
  6. SQL 쿼리 작성하기

 

유용한 문법 :  Alias

쿼리가 점점 길어지면 혼동이 생길 수 있다. 그래서 SQL은 Alias라는 별칭 기능을 지원한다.

아래와 같이 테이블에 문자(별칭)을 붙여서 지정하는 것이 가능하다.

select * from 테이블명 o
where o.필드명 = '조건'

 

 

또는 아래와 같이 통계를 낼 필드에 as를 이용해 별칭을 지정하는 것도 가능하다.

select 필드명, count(*) as cnt from 테이블명 o
where o.필드명 = '조건'
group by 필드명

'Development > SQL' 카테고리의 다른 글

SQL 기초_4  (0) 2023.03.22
SQL 기초_3  (0) 2023.03.22
SQL기초_1  (0) 2023.03.20