group by

: 레코드 조회 시 각 레코드를 하나의 그룹으로 묶어서 표현해 준다.

 

having

: group by를 통해 묶인 레코드 그룹에 조건을 걸어 준다.

 

 

(ex) 성적 테이블

일련번호 반정보 이름 점수
1 A반 오이카와 90
2 A반 쿠니미 95
3 A반 오사무 85
4 B반 키타 100
5 B반 카게야마 85
6 B반 쿠로오 90

 

 

성적 테이블을 반 별로 그룹화하고 반 인원을 표시하시오.

select count(반정보) as 반인원 from 성적 group by 반정보

반정보 인원
A반 3
B반 3

 

 

성적 테이블을 반별로 그룹화하고 반평균을 표시하시오.

select avg(점수) as 반평균 from 성적 group by 반정보

반정보 반평균
A반 90
B반 91

 

 

성적 테이블을 점수로 그룹화하고 각각의 인원을 표시하시오.

select count(점수) as 인원 from 성적 group by 점수

점수 인원
85 2
90 2
95 1
100 1

 

 

 

성적 테이블을 반별로 그룹화하고 각 그룹의 최고점수와 최저점수를 표시하시오.

select 반정보, max(점수) as 최고점수, min(점수) as 최저점수 from 성적 group by 반정보 

반정보 최고점수 최저점수
A반 95 85
B반 100 85

 

 

 

성적 테이블을 반별로 그룹화하고 다시 90점 초과와 90점 이하로 그룹화한 후 각각의 인원을 표시하시오.

select 반정보, (case when 점수 > 90 then '90점 초과' else '90점 이하' end) as 조건, count(점수) as 인원

반정보 조건 인원
A반 90점 이하 2
A반 90점 초과 1
B반 90점 이하 2
B반 90점 초과 1

 

성적 테이블을 반별로 그룹화하고 90점 초과 인원을 표시하시오.

select 반정보, count(반정보) as 90점 초과 인원 from 성적 group by (반정보) having count(점수) > 90

반정보 90점 초과 인원
A반 1
A반 1

* where 절과 달리, having 절은 집계 함수(count, sum, avg, max, min..) 가 사용이 가능하다.

 

 

 

 

https://m.blog.naver.com/diceworld/220152819420

 

MSSQL GROUP BY 활용하기

- GROUP BY 절이란? 레코드 조회시 각 레코드를 하나의 그룹으로 묶어서 표현해주는 역활을 합니다....

blog.naver.com

 

'개인 공부 > 데이터베이스' 카테고리의 다른 글

[mssql] with 구문  (0) 2022.10.04
[mssql] SET NOCOUNT ON/OFF  (0) 2022.09.30
[mssql] 접두사 N  (0) 2022.09.29
[mssql] IN 연산자  (0) 2022.09.29
[mssql] CAST 외 변환  (0) 2022.09.29

+ Recent posts