我想在这张桌子上计算percentile_cont。 在Oracle中,查询将是
SELECT PERCENTILE_CONT(0.05) FROM sometable;
在MariaDB / MySQL中它的替代品是什么?
答案 0 :(得分:1)
在MariaDB或MySQL中没有内置函数,所以你必须在SQL级别上解决这个问题(或者通过添加用C语言编写的用户定义函数)。
这可能有助于提出SQL解决方案:
http://rpbouman.blogspot.de/2008/07/calculating-nth-percentile-in-mysql.html
答案 1 :(得分:1)
MariaDB 10.2具有窗口函数。
对于MySQL /较旧的MariaDB,假设您只想要一组值的第N个百分位数。
这是最好的表单应用程序代码,但可以构建到存储的例程中。
SELECT COUNT(*) FROM tbl
。SELECT
构建并执行LIMIT n,1
,其中n
计算为百分位数乘以计数,然后填入查询。如果需要在两个值之间进行插值,则会变得更加混乱。你也需要吗?
答案 2 :(得分:1)
self.navigationViewController.pushViewController(viewController, animated: true)
viewController.bind(to: viewModel)
介绍了MariaDB 10.3.3
,PERCENTILE_CONT
和PERCENTILE_DISC
窗口函数。
PERCENTILE_CONT()(代表连续百分位数)是一个有序集合聚合函数,也可以用作窗口函数。它返回一个值,该值对应于排序顺序中的给定分数。如果需要,它将在相邻的输入项之间进行插值。
MEDIAN
答案 3 :(得分:1)
虽然MariaDB 10.3.3以窗口函数(see Lukasz Szozda's answer)的形式支持这些函数,但是您也可以在MySQL 8中使用窗口函数来仿真它们:
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;