본문 바로가기

코딩 학원(국비지원)

41일차 코딩학원

반응형

1. 순위 집계 RANK(), DENSE RANK() 윈도우 함수

 

SQL RANK() 함수와 DENSE_RANK() 함수는 둘 다 SQL에서 사용되는 윈도우 함수로, 집계 함수와 함께 사용하여 데이터를 분석하는데 사용됩니다.

 

먼저, RANK() 함수는 결과 집합에서 각 레코드의 순위를 지정하는 데 사용됩니다. 만약 동일한 값을 가진 레코드가 있다면, 해당 레코드에 대해 동일한 순위가 부여됩니다. 예를 들어, 첫 번째 순위가 1이면, 두 번째로 큰 값도 2번 순위가 됩니다. 이러한 경우에 다음 순위는 건너뛰어집니다.

반면, DENSE_RANK() 함수는 RANK()와 유사하지만, 동일한 값을 가진 레코드에 대해 순위를 부여할 때 건너뛰는 것이 아니라, 다음 순위를 부여합니다. 예를 들어, 첫 번째 순위가 1이면, 두 번째로 큰 값도 2번 순위가 됩니다. 그러나 세 번째 값이 두 번째 값과 동일하다면, DENSE_RANK() 함수는 세 번째 값에 대해서도 2번 순위를 부여합니다.

따라서 RANK() 함수는 결과 집합에서 레코드 간 순위를 건너뛸 수 있지만, DENSE_RANK() 함수는 결과 집합에서 레코드 간 순위를 건너뛰지 않습니다.

 

2. WITH문

-- WITH문
-- 영화상영시간별로 SHORT, MEDIUM, LONG으로 나눴음
select film_id 
		,title 
		,(case 
			when length < 30 then 'SHORT'
			when length >= 30 and length < 90 then 'MEDIUM'
			when length > 90 then 'LONG'
		  end
		 )	length
from film
;

-- WITH문을 이용해서 앞선 집합을 CTE_FILM으로 지정하고 
-- 다른 SELECT문에서 CTE_FILM을 조회하기 

with CTE_FILM as (
	select film_id 
		,title 
		,(case 
			when length < 30 then 'SHORT'
			when length >= 30 and length < 90 then 'MEDIUM'
			when length > 90 then 'LONG'
		  	end
		 )	LENGTH_SML_NM
		 , length 
	from film
)
-- select * from CTE_FILM where length = 'LONG';

select A.film_id
		,A.TITLE
		,A.LENGTH_SML_NM
		,A.LENGTH
from CTE_FILM A
where A.LENGTH_SML_NM ='MEDIUM'
order by A.TITLE
;

 

3. 

반응형

'코딩 학원(국비지원)' 카테고리의 다른 글

43일차 코딩학원  (0) 2023.03.21
42일차 코딩학원  (0) 2023.03.20
40일차 코딩학원  (1) 2023.03.16
39일차 코딩학원  (0) 2023.03.15
38일차 코딩학원  (0) 2023.03.14