mysql - 在一个 id 中减去多个日期

标签 mysql sql date datediff

我正试图在 mySQL 中完成一些事情,这很困难,因为缺少“滞后”功能,而且我读过的所有关于日期差异的例子,因为在所有这些例子中,总是有一个 ID一次约会。在这里,我试图在一个 ID 内做日期差异,当日期差异超过 60 时,然后返回 1 的指示符,否则返回 0。

不确定最好的方法是什么。将 row_number() 与日期结合使用吗?障碍是在多个 ID 中执行此操作,因为我阅读的很多内容都没有涵盖这一点。任何方向都会有所帮助。 谢谢!

ID  |   Service Date    |   Date Difference |   Indicator
1   |   1/22/2016       |   0               |   1
1   |   3/26/2016       |   64              |   1
1   |   5/25/2016       |   60              |   0
1   |   9/15/2016       |   113             |   1
2   |   8/1/2016        |   0               |   1
3   |   1/26/2016       |   0               |   1
3   |   3/9/2016        |   43              |   0
3   |   4/30/2016       |   52              |   0
4   |   8/9/2016        |   0               |   1
5   |   11/19/2016      |   0               |   1
6   |   10/14/2016      |   0               |   1
7   |   1/31/2016       |   0               |   1
7   |   8/11/2016       |   193             |   1

最佳答案

您可以使用变量,但这很棘手。为了使其可靠地工作,所有变量都需要在一个表达式中赋值:

select t.*, datediff(prev_date, date) as diff,
       (case when datediff(prev_date, date) < 60 then 0 else 1 end) as indicator
from (select t.*,
             (case when @id = id
                   then (case when (@prev := @d) = NULL then 'never' -- intentional
                              when (@d := date) = NULL then 'never' -- intentional
                              else @prev
                         end)
                   when (@d := date) = NULL then 'never' -- intentional
                   else NULL
              end) as prev_date
      from t cross join
           (select @id := -1, @d := '') params
      order by id, date
     ) t

关于mysql - 在一个 id 中减去多个日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46106267/

相关文章:

mysql - 使用 JOIN 而不是 WHERE OR... IN 子查询

html - 如何隐藏 Html &lt;input type ="date"> 日历面板中的年份部分?

计算复杂职业管理日期的算法

mysql - 使用 mySQL 按顺序检索值并减去行

mysql - 如何将来自 SELECT 语句的值存储在 MySQL 存储过程的变量中?

python - 在 python 中运行的 Sqlite Case 语句

SQL 直方图 : Greater than 10 orders group as "10+ bucket"

php - 获取MySQL数据库中每个ID的最新(日期)记录

php - 如何在变量中插入回显值?

python - 如何使用 Django ORM 计算从出生年份到注册日期的用户年龄