오늘 나는 (TIL)

[TIL 240701] datediff, window function, cominations & permutations

thebuck104 2024. 7. 1. 20:22

오늘 학습한 내용은 아래와 같다.

 


1. datediff
select datediff( '**' ,end_date, start_date)

 

end_date와 start_date 사이의 시간 차이를 구해준다.

기본값은 일 수

 

** 안에는 아래와 같은 인자들이 들어갈 수 있다.

2. window function (continued)

 

열의 연산이 아닌 행의 연산을 수행해주는 윈도우 함수.

 

윈도우 함수의 장점은 쿼리를 간단히 작성할 수 있다는 점이다.

 

그러나 행과 행의 연산을 수행하다 보니, 기본적으로 정렬 (Sort)의 과정이 들어간다.

 

이 뜻은 SQL의 연산 능력 저하를 뜻하기도 하며,

 

테이블 스캔 횟수가 여타 집계 함수보다 적다는 이유로 무조건 윈도우 함수를 쓰는 것은 옳지 못하다.

 

기본적으로 스캔해야 할 행의 수를 줄이고 (서브 쿼리나 Join을 활용해) 성능 저하에 주의하며 써야한다.

 

 

3. combinations (python)
from itertools import combinations
from itertools import permutations

def solution(number):
    combi = list(combinations(number,3))
    answer = 0
    for element in combi:
        if sum(element) == 0:
            answer+=1
    return answer

 

프로그래머스의 "삼총사" 문제를 위와 같이 풀었다.