Как получить количество (распределение значений) разницы дат между двумя столбцами, используя SQL? - PullRequest
0 голосов
/ 31 января 2020

Надеясь, что кто-то сможет помочь; У меня есть 2 таблицы, которые могут быть объединены с колонкой ID.

В таблице 1 есть столбец created_date, в таблице 2 столбец firstorderdate. Я хотел бы вычесть первую дату заказа из созданной даты, чтобы получить количество дней, а затем получить счетчик для различных значений, в идеале упорядоченных по убыванию. По сути, я пытаюсь посмотреть на распределение разностей дат.

Я создал скрипку SQL, чтобы показать, как может выглядеть моя схема. Мои столбцы даты могут содержать нулевые значения, и мне интересно только, если они оба не равны нулю, если это имеет смысл.

http://sqlfiddle.com/#! 9 / 9adbca

Спасибо за авансовый

Ответы [ 2 ]

0 голосов
/ 31 января 2020

Используйте min(), чтобы найти разницу между датой первого заказа и датой создания. Затем посчитайте результат этого запроса.

Вам даже не нужен денормализованный столбец firstOrderDate; просто присоединяйтесь к заказам.

Что-то вроде:

select
    days,
    count(*)
from (
    select min(datediff(createdDate, orderDate)) as days
    from users
    join orders on orders.userId = users.id
    group by users.id) x
order by days
0 голосов
/ 31 января 2020

Предполагая MySQL из предоставленного вами sqlfiddle.

SELECT DATEDIFF(t2.FirstOrderDate, t1.created_date) as 'DaysBetween'
       , Count(1)
FROM Table1 t1
inner join Table2 t2
    on t1.ID = t2.ID
WHERE t2.FirstOrderDate is not null
and t1.created_date is not null
GROUP BY DATEDIFF(t2.FirstOrderDate, t1.created_date)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...