SQL Среднее разницы в днях - PullRequest
0 голосов
/ 22 марта 2019

Я точно так же делаю, что и здесь Дата Разница между последовательными строками

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

Примерно так.

Average in days

Когда я добавляю avg (datediff (d1, d2)), я получаю следующую ошибку:

[Код: -112, состояние SQL: 42607] Операнд функции столбца «AVG» включает функцию столбца, скалярный полный выбор или подзапрос. SQLCODE = -112, SQLSTATE = 42607, DRIVER = 4.22. 29

PS:

  1. Мне не удалось добавить комментарий на той же странице вышеуказанной ссылки, что и мой оценка переполнения стека низкая, и это не позволяет мне комментировать.
  2. Я использую db2, поэтому вместо datediff я использую timestampdiff. Динт хочу запутать, написав это выше.
  3. Извинения, если не ясно. Дайте мне знать, что я могу сделать лучше

1 Ответ

0 голосов
/ 22 марта 2019

Удобно использовать функцию lead OLAP в этом случае:

with tab (ID, Account, Date) as (values
  (1, 1001, date('2011-09-10'))
, (2, 2001, date('2011-09-01'))
, (3, 2001, date('2011-09-03'))
, (4, 1001, date('2011-09-12'))
, (5, 3001, date('2011-09-18'))
, (6, 1001, date('2011-09-20'))
)
select account, avg(days(date_next) - days(date)) avg_diff
from (
select id, account, date, lead(date) over (partition by account order by date) date_next
from tab
)
group by account;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...