簡體   English   中英

sql中同一列中2個日期的平均dateddiff

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

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