Как я могу получить средние значения в формате дней с помощью SQL-запроса, ниже приведены данные моей таблицы - PullRequest
0 голосов
/ 11 октября 2019
    mobile        date
 - 9833099876   -2019-01-23
 - 9833099876   -2019-02-02
 - 9833099876   -2019-02-02
 - 9833099876   -2019-03-16
 - 9833099876   -2019-05-20

и требуемый вывод должен быть таким:

9833099876  32 -->this is only for example , not the  answer

1 Ответ

0 голосов
/ 12 октября 2019

С cte (con_mob, billsDate) AS (ВЫБЕРИТЕ DISTINCT contact_mobile, bills_date ОТ Sales_data WHERE contact_mobile НЕ НУЛЯЕТ, а bills_date НЕ НУЛЯЕТ)

ВЫБИРАЙТЕ con_mob, meadian_value = CASE WHEN КОЛИЧЕСТВО (billsD)0 THEN DATEDIFF (ДЕНЬ, КОНВЕРТ (дата, MIN (billsDate)), CONVERT (дата, МАКС (billsDate))) ELSE DATEDIFF (ДЕНЬ, CONVERT (дата, MIN (billsDate))), CONVERT (дата, МАКС (billsDate))) / 2 КОНЕЦ (ВЫБРАТЬ con_mob, billsDate, DENSE_RANK () OVER (PARTITION BY con_mob ORDER BY billsDate) AS Rownum, COUNT (billsDate) OVER (PARTITION BY con_mob) КАК vstcnt ОТ cte ct) ГДЕ ИЛИ 0% = 2% = 2%Rownum в (vstcnt / 2, vstcnt / 2 +1) ИЛИ vstcnt% 2 <> 0 И Rownum в (vstcnt / 2, vstcnt / 2 + 2) GROUP BY con_mob ИМЕЮЩИЙСЯ СЧЕТ (billsDate)> 1

...