[SQL] Group by, Order by
카테고리 없음

[SQL] Group by, Order by

반응형

1. Group by

Group by 는 동일한 데이터를 묶어주는 기능입니다.

 

select field1, count(*)
  from users_table
 group by field1

 

 

쿼리 실행순서

from ➤ group by ➤ select

 

 

예제

field1 별로 묶어서 각 데이터별 개수 구하기

select field1, count(*)
  from table1
 group by field1

 

field1 별로 묶인 데이터별 최소값 구하기

select field1, min(field2)
  from table1
 group by field1

 

field1 별로 묶인 데이터별 최대값 구하기

select field1, max(field2)
  from table1
 group by field1

 

field1 별로 묶인 데이터별 평균값 구하기

select field1, avg(field2)
  from table1
 group by field1

추가

select field1, round(avg(field2))
  from table1
 group by field1
select field1, round(avg(field2), 1)
  from table1
 group by field1

 

group by 로 묶을 떈 반드시 어떤 통계치를 출력할지 넣어야합니다.

select *
  from orders
 group by payment_method

ex)

select count(*)
  from orders
 group by payment_method

 

Order by

Order by 뒤에 정렬하고자 하는 기준 칼럼을 적으면 해당 칼럼을 기준 오름차순으로 정렬이 됩니다.

select *
  from table1
 order by field1
select *
  from table1
 order by field1 desc

 

 

where 와 함께 사용하기

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에 따라 합쳐지 데이터가 각각 몇 개가 합쳐진 것인지 세줍니다.

 

여기서 order by가 추가 된다면 맨 마지막에 실행되어 정렬됩니다.

 

 

 

Group by, Order by 예제

1. 앱개발 종합반의 결제수단별 주문건수 세어보기

select payment_method, count(*) 
  from orders
 where course_title = "앱개발 종합반"
 group by payment_method;

 

2. Gmail을 사용하는 성씨별 회원수 세어보기

select name, count(*) 
  from users
 where email like '%gmail.com'
 group by name;

 

3. course_id별 '오늘의 다짐'에 달린 평균 like 개수 구해보기

 

select course_id, avg(likes) 
  from checkins
 group by course_id;

 

Alias

-- 1 --
select *
  from orders o
 where o.course_title = '앱개발 종합반'

 

-- 2 --
select payment_method, count(*) as cnt 
  from orders o
 where o.course_title = '앱개발 종합반'
 group by payment_method

 

 

 

 

 

 

 

반응형