下面的查询是我在网上找到的,它似乎可以正确计算中位数。但是,仅通过查看它,我不知道找到中位数在做什么。了解此查询的所有部分(转换、子字符串索引、组连接、分隔符等)的人能否向我解释/分解此查询的工作原理?
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
欢迎任何帮助!
谢谢
最佳答案
我会从内部开始,然后走出去
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
关于mysql - mysql查询的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24617324/