【发布时间】:2014-01-02 01:09:13
【问题描述】:
我有一个数据库 db 和一个表 Table。
看起来有点像:
id | val
--------
1 | 45
2 | 35
3 | 23
4 | 49
5 | 67
6 | 12
7 | 0
8 | 87
9 | 46
(这只是一个示例数据集。实际数据集很大。我需要尽可能少地工作。)
我需要找到列 val 的中位数。实际上我需要一个 php 函数来多次使用。
确实存在类似的问题:Simple way to calculate median with MySQL
我在这个问题上尝试了几个答案,但没有一个对我有用。接受的答案不起作用,因为它过去仅适用于旧版本的 SQL。
PS:它也应该适用于许多重复的情况。
【问题讨论】:
-
如果你只是想在php中做,只要把所有的值拉出来,放入一个数组中,对数组进行排序,找到中位数。
-
会不会很慢?排序然后找到中间值?
-
这肯定取决于数据集。我只是根据现在那里的情况。
-
这只是一个例子,我实际上有一个庞大的数据集。我会修改问题。谢谢!
-
这只是一个想法,但是您可以先通过sql计算数据的大小。然后查询数据(排序),但选择计数行的 1/2,所以你在中间点,然后只是最后一行数据?