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;
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;
'학부 전공 > 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 |