我试图找到奇数浮点数的中位数。出于这个原因,我使用了以下代码-
select a from tab1
limit 1 offset (count(a) div 2) - 1
但是,这个代码给出了语法错误。我正在使用MySQL。对于解决这个问题,任何帮助/建议都是非常感谢的。
MySQL不能在limit
中使用表达式。您可以使用窗口函数:
select t.*
from (select tab1.*,
row_number() over (order by a) as seqnum,
count(*) over () as cnt
from tab1
) t
where seqnum = (cnt div 2) - 1 ;
注意:这与您在问题中使用的逻辑相同,但使用窗口函数而不是limit
。还有其他方法可以计算中位数——严格来说,这不是中位数,因为它不适用于偶数和奇数行。