首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用MySQL查找中位数

使用MySQL查找中位数
EN

Stack Overflow用户
提问于 2021-06-18 15:43:29
回答 2查看 31关注 0票数 0

我知道有很多方法可以找到中位数,但我正在尝试使用这种方法来找到中位数。有人能给我解释一下为什么这个不起作用吗?这里的错误是“group函数的无效使用”,但是当我使用HAVING而不是WHERE时,系统无法识别什么是RowNumber。我很困惑。

代码语言:javascript
运行
复制
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)
            )
EN

Stack Overflow用户

发布于 2021-06-18 15:52:02

中位数是有序序列中的中间元素-如果有偶数,则是两个中间元素的平均值。

代码语言:javascript
运行
复制
SELECT
    AVG(LAT_N)
FROM(
    SELECT
        LAT_N,
        ROW_NUMBER() OVER (ORDER BY LAT_N) AS RowNumber
    FROM
        STATION
    ) AS q
WHERE
RowNumber >= FLOOR ( (SELECT COUNT(*) FROM STATION)/2 + 0.5)
AND
RowNumber <= CEIL ( (SELECT COUNT(*) FROM STATION)/2 + 0.5)

下面是dbfiddle https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=b31e08f4ece61ecb95d9dde76c389fb1

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68031255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档