gpt4 book ai didi

MySQL获取不同记录中两个最小日期之间的差异

转载 作者:行者123 更新时间:2023-11-30 21:28:46 26 4
gpt4 key购买 nike

我有一个具有以下结构和示例记录的表:

enter image description here

我想弄清楚如何获取每个名称的两个最早的 created_at 记录之间的差异。名称可能只有一条记录,在这种情况下,任何默认值都可以,例如 0、-1 或 NULL。在上面的记录上运行它,我预计会得到这样的结果:

nameA, 31
nameB, 59
nameC, -1

我想不出任何干净的方法来纯粹在 SQL 中执行此操作。我考虑过加入表本身,按名称分组,并从第一个加入中选择最小的 created_at,但我不知道如何选择第二个最小值以将其归结为单个记录。

谢谢

最佳答案

一个选项,使用带有 ROW_NUMBER 的 CTE:

WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY name ORDER BY created_at) rn
FROM yourTable
)

SELECT
name,
DATEDIFF(MAX(created_at), MIN(created_at)) AS diff_in_days
FROM cte
WHERE rn <= 2
GROUP BY
name
ORDER BY
name;

关于MySQL获取不同记录中两个最小日期之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57422978/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com