我想計算全年發生的每月付款差異。例如,如果我在 2 月有 100 筆付款,在 3 月有 120 筆付款,則差值為 20。我已經使用 LAG() 進行了查詢,但我面臨的唯一問題是查詢正在顯示空值。由于二月之前沒有付款,因此 MonthByMonth 將顯示 NULL,我想跳過那一行。下面是示例資料集

這是我正在使用的查詢
SELECT date_format(payment_date,'%M') 'Month', COUNT(*) - LAG(COUNT(*))
OVER (ORDER BY FIELD(date_format(payment_date,'%M'),
'January','February','March','April','May','June','July','August','September','October','November','December'))
AS 'MonthByMonthChange'
from main
GROUP BY date_format(payment_date,'%M')
ORDER BY FIELD(date_format(payment_date,'%M'),'January','February','March','April','May','June','July','August','September','October','November','December');
還附上我得到的輸出。

uj5u.com熱心網友回復:
子查詢,然后在逐月更改欄位上添加檢查以過濾掉NULL記錄。
WITH cte AS (
SELECT DATE_FORMAT(payment_date, '%M') Month,
COUNT(*) - LAG(COUNT(*)) OVER (
ORDER BY FIELD(DATE_FORMAT(payment_date, '%M'),
'January', 'February', 'March', 'April', 'May', 'June', 'July',
'August', 'September', 'October', 'November', 'December'))
AS MonthByMonthChange
FROM main
GROUP BY 1
)
SELECT Month, MonthByMonthChange
FROM cte
WHERE MonthByMonthChange IS NOT NULL
ORDER BY FIELD(Month, 'January', 'February', 'March', 'April', 'May', 'June',
'July', 'August', 'September', 'October', 'November',
'December');
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/480896.html
標籤:mysql sql 数据库 通过...分组 sql-order-by
上一篇:嘗試宣告游標時出現此錯誤
