본문 바로가기
학부 전공/DB

SQL Grouping & Having

by 장어진 2021. 6. 19.

Grouping

Relation에서 쓰였던 것과 같은 개념이다.

Ex)

SELECT studioName, SUM(length)

FROM Movie

GROUP BY studioName;


Having

그룹을 할 때 제외하고 싶은 것을 정의하기 위해 사용된다. 예를 들어 1930년도 이전에 찍은 영화가 있는 감독의 이름과 영화 길이의 합을 구해라 라는 식의 query가 있으면 사용할 수 있다.

>> select name, sum(length)

from MovieExec, Movie

where producerCNo = certNo

Group by name

Having min(year) < 1930;


Window Function

Partition by : group by와 헷갈리지 않기 위해 partition으로 나눠놓음. 없을 경우 테이블 전체가 partition으로 사용됨. window function은 각각의 partition에 대해서 적용이 된다.

Order by : order로 순서를 정할 수 있다.

Window frame : 예를 들어 sum(count, AVG )이라는 것이 있을 때 전체 파티션에 대해서 값을 계산하지 않고 처음부분부터 현재 row까지의 값을 계산하는데 이것을 window frame이라 한다.

Ex)

Select title, year,

row_number () over ()

From movie;

라고 하면 전체 파티션에 대해서 row_number가 할당된다.

Select title, year,

row_number () over (order by title, year)

From movie

Order by title, year;

이면 partition 할당은 없었으니 전체가 하나의 partition이 되고 title, year 순으로 정렬된다.

 

종합 :

select title, year, studioname,

row_number() over (

partition by studioname

order by year)

from movie;

 

728x90

'학부 전공 > DB' 카테고리의 다른 글

SQL INSERT  (0) 2021.06.19
DB SQL INSERT 오류 해결하는 과정  (0) 2021.06.19
Join Eexpression in SQL2  (0) 2021.06.19
subquery  (0) 2021.06.19
SQl 집합 연산(합집합, 교집합, 차집합)  (0) 2021.06.19