【发布时间】:2017-07-24 20:28:30
【问题描述】:
我有一个包含一列整数值的 SQL 表,我想在不进行任何排序的情况下找到这些值的中位数。我首先尝试查找表中大于和小于每个值的数字:
SELECT DISTINCT d1.v,
(SELECT COUNT(d2.v)
FROM Values d2
WHERE d2.v > d1.v
) AS greater_than,
(SELECT COUNT(d2.v)
FROM Values d2
WHERE d2.v < d1.v
) AS less_than
FROM Values d1
我不确定如何继续。我相信我想要上表中的值,其中greater_than 和less_than 都等于num_entries / 2,但这仅适用于具有偶数条目的表。从我上面得到中位数的好方法是什么?
【问题讨论】:
-
是的,我相信您需要添加某种案例工作,具体取决于表中条目数的奇偶性。
-
MySQL或SQL-Server,是哪一个? -
只是想知道,为什么要这样做而不进行排序?
-
如果可能有重复值,这也不起作用。示例:[1, 1, 2]
-
@waka 它是
MySQL。抱歉,我已经更改了标签。