【发布时间】:2021-06-18 07:43:28
【问题描述】:
我知道有很多方法可以找到中位数,但我正在尝试使用这种方法来找到中位数。有人可以向我解释为什么这不起作用吗?这里的错误是“无效使用组函数”,但是当我使用 HAVING 而不是 WHERE 时,系统无法识别 RowNumber 是什么。我很困惑。
SELECT
ROUND(AVG(LS.LAT_N))
FROM(
SELECT
LAT_N,
ROW_NUMBER() OVER (ORDER BY LAT_N) AS RowNumber
FROM
STATION
) AS LS
WHERE
RowNumber IN (
IF(
FLOOR(COUNT(LS.LAT_N)/2+0.5) = CEIL(COUNT(LS.LAT_N)/2+0.5),
FLOOR(COUNT(LS.LAT_N)/2+0.5),
FLOOR(COUNT(LS.LAT_N)/2+0.5) AND CEIL(COUNT(LS.LAT_N)/2+0.5)
)
【问题讨论】:
-
but I am trying to use this method...请解释一下“这个”方法是什么。在不知道方法的情况下,我们可能无法给出完整的答案。 -
有一个更简单的解决方案,涉及两个行号(asc 和 desc)并过滤两个数字匹配的行。