Я хочу разницу между последовательными строками даты в столбце sql - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть такие данные:

  date
2019-12-10
2019-12-21
2019-12-30

Я хочу что-то вроде этого:

  date            Time_difference
2019-12-10            11
2019-12-21             9
2019-12-30          

Ответы [ 2 ]

1 голос
/ 20 апреля 2020

Если вы используете MySQL 8.0, просто используйте lead():

select
    date,
    datediff(lead(date) over(order by date), date) days_diff
from mytable

В более ранних версиях параметр является коррелированным подзапросом:

select 
    t.date,
    datediff(
        (select min(t1.date) from mytable t1 where t1.date > t.date),
        t.date
    ) days_diff
from mytable t
1 голос
/ 20 апреля 2020

Использование lead():

select date, datediff(lead(date) over (order by date), date)
from t;

Доступно в MySQL 8+. Один из способов в более ранних версиях MySQL - использовать коррелированный подзапрос:

select date,
       datediff( (select min(date)
                  from t t2
                  where t2.date > t.date
                 ),
                 date
               ) as diff
from t;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...