[英]Average datediff of 2 date in the same column in sql
我需要為每個消費者獲取同一列中的 2 個日期的平均datediff
。 該表如下所示:
名稱 | 日期 | 地位 |
---|---|---|
標記 | 2021-01-03 | 發送 |
標記 | 2021-01-05 | 到達的 |
肯 | 2021-01-07 | 發送 |
肯 | 2021-01-10 | 到達的 |
標記 | 2021-01-12 | 發送 |
標記 | 2021-01-15 | 到達的 |
我需要獲取到達的平均日期差異並為每個客戶發送。
Output應該是這樣的:
名稱 | 平均日期 |
---|---|
標記 | 2.5 |
肯 | 3個 |
這是我的代碼,但 output 不匹配
SELECT
name,
AVG(DATEDIFF(day, (SELECT date FROM sell WHERE status='arrived'), (SELECT date FROM sell WHERE status='send')))
FROM sell
GROUP BY name
你能幫我修復代碼嗎? 謝謝:)
這是一個典型的缺口和孤島問題。
每個島只有兩行,這讓事情變得更容易,所以你可以只使用LAG
來獲得另一行。
DATEDIFF
僅返回跨越了多少個日期邊界。 為了獲得准確的結果,請使用second
而不是day
,並除以小數點86400.0
SELECT
name,
AVG(DATEDIFF(second, s.PrevDate, s.date) / 86400.0)
FROM (
SELECT *,
PrevDate = LAG(s.date) OVER (PARTITION BY s.name ORDER BY s.date)
FROM sell s
) s
WHERE s.status = 'arrived'
GROUP BY
s.name;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.