Bigquery Qualify

juro·2023년 8월 12일
0

BigQuery

목록 보기
1/1
post-thumbnail

회사에서 쿼리를 짜면서 코드를 좀 더 간결하게 만들어주는 나름 유용한 함수를 발견했다.

보통 window 함수를 사용하고 해당 컬럼에 조건을 걸어주고 싶을 때,
다음과 같이 서브쿼리를 만들어야 했다.

이해하기 쉽게 쿼리 예시를 하나 들어보자.

user 테이블에서 서울에 사는 유저들 중 나이대별로 가장 많은 요금을 지불한 사람이 누군지 조회하는 쿼리를 짜보자.

일반적으로는 아래와 같이 서브쿼리를 만들어 주어야 한다.

SELECT * 
FROM (
  SELECT
      id,
      RANK() OVER (PARTITION BY age ORDER BY fee DESC) as rank
  FROM user
  WHERE location = 'Seoul'
  )
 WHERE rank = 1

그러나 Qualify를 사용한다면 코드가 더 간결해진다.

SELECT
	id,
    RANK() OVER (PARTITION BY age ORDER BY fee DESC) as rank
FROM user
WHERE location = 'Seoul'
QUALIFY rank = 1

여기서 rank 컬럼을 안보이게 하고싶다면 Qualify 절에 window 함수를 넣어주면 된다.

SELECT
	id
FROM user
WHERE location = 'Seoul'
QUALIFY RANK() OVER (PARTITION BY age ORDER BY fee DESC)  = 1

다만 DELETE 문에서는 QUALIFY가 적용이 되지 않았다 하하

0개의 댓글