簡體   English   中英

查詢以查找日期之間的最大間隔

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM