MySQL/MariaDB中PERCENTIAL_CONT的替代

2022-02-24 00:00:00 mariadb mysql oracle analytic-functions

我要计算此表上的PERCENTIALE_CONT。 在Oracle中,查询将为

SELECT PERCENTILE_CONT(0.05) FROM sometable;

在MariaDB/MySQL中有什么替代方案?


解决方案

虽然MariaDB10.3.3以窗口函数(see Lukasz Szozda's answer)的形式支持这些函数,但是您也可以使用MySQL8中的窗口函数来模拟它们:

SELECT DISTINCT first_value(matrix_value) OVER (
  ORDER BY CASE WHEN p <= 0.05 THEN p END DESC /* NULLS LAST */
) x,
FROM (
  SELECT
    matrix_value,
    percent_rank() OVER (ORDER BY matrix_value) p,
  FROM some_table
) t;

I've blogged about this more in detail here。

相关文章