FILTER
기본 구조
SELECT COUNT(1) FILTER (WHERE 조건) AS alias_name
FROM 테이블명;
# 지정된 조건을 만족하는 행의 수를 세어 alias_name이라는 별칭으로 결과를 반환
참고 : https://www.postgresql.org/docs/current/sql-expressions.html
[활용 문제]
https://datalemur.com/questions/odd-even-measurements
Google Interview Question | DataLemur
Google SQL Interview Question: Calculate the sum of odd-numbered and even-numbered measurements.
datalemur.com
[문제] measurements 테이블에서 날짜별 인덱스 넘버가 홀수인 것을 odd_sum, 짝수인 것을 even_sum으로 출력하기
-- 정답 쿼리
WITH sub AS(
SELECT CAST(measurement_time AS DATE) AS measurement_day,
measurement_value,
ROW_NUMBER() OVER (PARTITION BY CAST(measurement_time AS DATE)
ORDER BY measurement_time) AS measurement_num
FROM measurements
)
SELECT measurement_day,
SUM(measurement_value) FILTER (WHERE measurement_num % 2 != 0 ) AS odd_sum,
SUM(measurement_value) FILTER (WHERE measurement_num % 2 = 0 ) AS even_sum
FROM sub
GROUP BY 1
'내일배움캠프 > SQL' 카테고리의 다른 글
[PostgreSQL] ::, CASE_ type 변환 (0) | 2025.03.12 |
---|---|
[SQL]LAG(), LEAD()함수 _현재 행의 이전 행의 값 참조하기 (0) | 2025.02.10 |
[SQL]SQL반복문_재귀적 CTE(WITH RECURSIVE) (1) | 2024.12.12 |
[SQL] null값 대체하기_COALESCE, IFNULL (0) | 2024.12.12 |
[SQL] WITH절이란, 서브쿼리와의 쓰임새 차이 (0) | 2024.12.06 |