【发布时间】:2018-04-05 01:54:35
【问题描述】:
我有一个包含 499 个正非整数 N 的列表,我想找到这些数字的中位数,我有以下内容:
SELECT (ROUND(N,4)) FROM TABLE ORDER BY N LIMIT 1 OFFSET ((COUNT(N)-1)/2);
我收到以下错误:
"ERROR 1064 (42000) at line 15: 你的 SQL 语法有错误; 检查与您的 MySQL 服务器版本相对应的手册 在第 4 行的 '((COUNT(N)-1)/2)' 附近使用正确的语法
如果我将 ((COUNT(N)-1)/2) 替换为 249 (其中中位数将在表格排序后),则此方法有效,因此我不能使用 ((COUNT(N)-1)/2)。为什么是这样?我应该用什么代替找到中位数?
谢谢
【问题讨论】:
-
无法在选择查询中将 LIMIT 设为动态数字,请参阅:stackoverflow.com/a/5873705/2067753