본문 바로가기
DataBase/MySQL

[MySQL] 필드 기준으로 그룹 하기, 그룹에 조건 달기 - GROUP BY, HAVING

by coding-choonsik 2023. 3. 16.
728x90
반응형
SMALL

1. Group by절

  • select 그룹을 맺은 컬럼 또는 집계함수 from 테이블명 group by 그룹을 맺을 필드명 
  • group by 절의 칼럼은 select 절에 존재해야 사용할 수 있음

 

 

select gender from member group by gender;

 

✅ gender로 그룹한 그룹의 총 개수 조회

select gender, count(*) as 인원수 from member group by gender;

 

✅ gender로 그룹한 그룹들의 포인트 총합 조회

select gender, sum(point) from member group by gender;

 

✅ gender로 그룹한 그룹의 포인트 평균 조회

select gender, avg(point) from member group by gender;


select userid, gender from member group by gender;

➡ 에러: gender로 그룹한 userid????


2. Group by절의 조건 달기 - having절

  • select 그룹을 맺은 컬럼 또는 집계함수 from 테이블명 group by 그룹을 맺을 필드명 having 조건절;

 

✅ gender로 그룹하고 성별이 여자인 회원들의 성별과 point 총합 조회

select gender, sum(point) from member group by gender having gender = 'female';


3. where + group by +  having +  oreder by 

  • select 그룹을 맺은 컬럼 또는 집계함수 from 테이블명 where 조건절 group by 그룹을 맺을 필드명 having 조건절 order by 정렬할 필드명 [asc, desc];
  • Query  작성 순서 : SELECT  FROM  WHERE  GROUP BY  HAVING  ORDER BY;

✅ 포인트가 0이 아닌 회원들 중에서 남, 여 그룹을 나눠 포인트의 평균을 구하고 평균 포인트가 100 이상인 성별을 검색하여 포인트로 내림차순 정렬

 

select gender, avg(point) as avg 
from member 
where point > 0 
group by gender 
having avg >= 100 
order by avg desc;

💡 having절order by절에서 별칭 사용 가능함!

 

 

728x90
반응형
LIST