@oldzas

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

Вопрос: есть поле типа datetime, надо посчитать его 90ый процентиль. Мои мысли: перевести дату в милисекунды, потом через percintile_disc посчитать, но это не работает.
  • Вопрос задан
  • 383 просмотра
Пригласить эксперта
Ответы на вопрос 1
erge
@erge
Примус починяю
Не знаю почему у вас не работает!? 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
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы