mysql查询的说明

时间:2014-07-07 18:29:58

标签: mysql

下面的查询是我在网上找到的,似乎正确计算了中位数。然而,仅仅通过观察它,我不知道它正在做什么来找到中位数。可以理解这个查询的所有部分(演员,子串索引,组连续,分隔符等)的人请向我解释/分解这个查询是如何工作的?

select CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(cost_per_unit ORDER BY
cost_per_unit SEPARATOR ','),',', 50/100 * COUNT(*) ), ',', -1) AS DECIMAL) 
AS '50th Percentile' from table

欢迎任何和所有帮助!

感谢

1 个答案:

答案 0 :(得分:2)

我将从内部开始并逐步解决

GROUP_CONCAT(cost_per_unit ORDER BY cost_per_unit SEPARATOR ',')

将每个cost_per_unit返回为以','分隔并按值排序的字符串

即。 1,2,3,4,4,5,6,7(7逗号)

SUBSTRING_INDEX(previous_value,',', 50/100 * COUNT(*) )

在','的一半之前返回字符串 即1,2,3,4

SUBSTRING_INDEX(previous_value,',', -1),

返回最后一个(第一个向后)之后的部分,' 即4