mysql - mysql查询的解释

标签 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

欢迎任何帮助!

谢谢

最佳答案

我会从内部开始,然后走出去

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/

相关文章:

php - 如何在不使用表格的情况下将文本片段放入类似网格的布局中?

mysql - MYSQL中如何统计单个id同一列记录的不同值

mysql - JDBC - 自动缩小 VARCHAR 以适应

sql-server - 如何更改 0% 以在存储过程中显示为 0

php - 如何在 simpledb 中进行分页

带子选择的 Mysql 查询花费太长时间..

mysql - WordPress数据库备份问题

python - 如何检测 Tornado 环境变量

mysql - SQL - 使用另一个表的结果插入或更新

php - 将值从 php 传递到 html