1 - 풀이 1) sum(case) case로 조건걸고 조건값 더해주기
SELECT SUBSTR(trans_date,1,7) month
, country
, COUNT(id) trans_count
, SUM(CASE WHEN state = 'approved' THEN 1 ELSE 0 END) approved_count
# CASE를 사용하여 하나씩 COUNT하여 전체를 SUM으로 총 합을 구한다.
# 위 식은 IF로도 변경가능하다. SUM(IF(state = 'approved',1,0)) AS approved_count
, SUM(amount)trans_total_amount
, SUM(CASE WHEN state = 'approved' THEN amount ELSE 0 END) approved_total_amount
FROM Transactions
GROUP BY 1,2
1 - 풀이 2) window function
SELECT
SUBSTR(trans_date, 1, 7) AS month
,country
,COUNT(id) AS trans_count
,SUM(amount) AS trans_total_amount
,CASE WHEN state = 'approved' THEN COUNT(id)
OVER (PARTITION BY SUBSTR(trans_date, 1, 7), country)
ELSE 0
END AS approved_count
,CASE WHEN state = 'approved' THEN SUM(amount)
OVER (PARTITION BY SUBSTR(trans_date, 1, 7), country)
ELSE 0
END AS approved_total_amount
FROM
Transactions
1 - WINDOW LAG사용 예시 : 기온이 상승한 날 구하기
WITH rising AS (SELECT
id
, recordDate
, temperature
, lag(temperature) OVER() AS `templus1`
FROM
Weather
)
SELECT id
FROM rising
WHERE temperature > templus1
[MYSQL] 특정 자릿수의 특정 문자 조회 (0) | 2024.10.25 |
---|---|
[SQL] REGEXP 응용 (1) | 2024.09.02 |
[SQL] WEEK 4 TUES - COUNT() 정리 (1) | 2024.07.17 |
[SQL] subquery 종류 및 사용법 정리 (0) | 2024.07.16 |
[SQL] 3개 이상의 테이블 조인 (0) | 2024.07.05 |