[英]query to find the maximum gap between dates
我有一個包含每個客戶名稱和日期列的表,並且想編寫一個查詢來給我每個用戶的間隔天數,
name date
ali 2022-01-01
ali 2022-01-04
ali 2022-01-05
ser 2022-03-01
ali 的答案應該是 3,而 ser 的答案將為空。
這是我嘗試過的:
select name ,min(date) over (partition by name order by date) start_date , max(date) over (partition by name order by date) end_date from table
我的方法是將每條記錄與最接近的日期匹配,然后找到最大間隙並與原始表左連接以獲得每個用戶的間隙。
這是 MySQL 版本:
select
cu.name, max(cg.gap) maxgap
from
customers cu left join
(
select
c.name, datediff(min(cn.date), c.date) gap
from
customers c left join customers cn on c.name = cn.name
where
cn.date > c.date
group by
c.name, c.date
) cg
on cu.name = cg.name
group by
cu.name
實現此目的的一種方法是使用窗口函數(如滯后、領先)來查找前一天/下一天,然后使用 datediff 函數查找日期之間的差異(例如當前日期和前一天)。 像這樣的東西。。
SELECT name,
MAX(datediff(date, PreviousDate)) AS Gap
FROM (SELECT name,
date,
LAG(date) OVER(PARTITION BY name ORDER BY date) as PreviousDate
FROM table t
GROUP BY name
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.