@oldzas

Как по полю дататайм посчитать 90ый процентиль?

Вопрос: есть поле типа datetime, надо посчитать его 90ый процентиль. Мои мысли: перевести дату в милисекунды, потом через percintile_disc посчитать, но это не работает.
  • Вопрос задан
  • 77 просмотров
Пригласить эксперта
Ответы на вопрос 1
Не знаю почему у вас не работает!? percentile_disc нормально работает непосредственно с datetime :

SELECT
  dt,
  DATEADD(MILLISECOND, pctcont_90_dt % 1000, DATEADD(SECOND, pctcont_90_dt / 1000, '19700101')) AS pctcont_90_dt,
  pctdisc_90_dt
  FROM (
    SELECT
      dt,
      CAST(
        percentile_cont(.90)
          WITHIN GROUP (ORDER BY (datediff_big(MS, '1970-01-01', dt)))
          OVER()
        AS BIGINT
      )
        AS pctcont_90_dt,
      percentile_disc(.90)
        WITHIN GROUP (ORDER BY dt) over()
        AS pctdisc_90_dt
    FROM test
  ) t
;


см. пример на dbfiddle
см. также percentile_disc vs percentile_cont
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
06 дек. 2022, в 22:59
1300 руб./за проект
06 дек. 2022, в 22:21
5000 руб./за проект
06 дек. 2022, в 20:37
10000 руб./за проект