我只能想象用两个数据库查询来做到这一点。第一个查找数据库中的行数,第二个ORDER BY
在我感兴趣的列上选择一个,LIMIT X, 1
其中 X 是行数的一半。
有没有一种简单的方法可以只用一个查询来做到这一点?
现在我在计算中使用平均值,但我认为平均值会更好;这些值没有上限,它们从下方以 0 为界。
编辑:是的,我的意思是说“中值”,但有一些大脑错误并搜索“平均值”。我现在在stackoverflow上找到了答案
我只能想象用两个数据库查询来做到这一点。第一个查找数据库中的行数,第二个ORDER BY
在我感兴趣的列上选择一个,LIMIT X, 1
其中 X 是行数的一半。
有没有一种简单的方法可以只用一个查询来做到这一点?
现在我在计算中使用平均值,但我认为平均值会更好;这些值没有上限,它们从下方以 0 为界。
编辑:是的,我的意思是说“中值”,但有一些大脑错误并搜索“平均值”。我现在在stackoverflow上找到了答案
这里有很多关于从 MySQL 表中计算中值的讨论。只需在页面上搜索“中位数”即可。
顺便说一句,我觉得没有内置函数可以做到这一点。中位数通常比平均值更能描述集中趋势。Access/VBA 在它的函数列表中有同样的漏洞。
我还没有在任何地方看到能够在单个查询中获得中位数的解决方案。我不介意临时表,但如果它们不是必需的,那就太好了!这是我想出的:
我对此进行了测试,得到了正确的答案。brand_prof 只是两列:brand_name 和利润,一个十进制值。如果这是整数值,您可能需要转换“ceiling((CAST COUNT(*) AS DECIMAL)...”比我测试过的更多。使用笛卡尔积并关联符号总和的好主意是不是我的。不幸的是,我忘记了作者。