gpt4 book ai didi

MySQL:使用 "two halves"方法查找中位数

转载 作者:行者123 更新时间:2023-11-29 16:09:30 25 4
gpt4 key购买 nike

我对 MySQL 比较陌生,我正在尝试编写一个函数来查找纬度列表的中位数。我在网上找到了解决这个问题的几个不同的解决方案,但我无法真正理解他们在做什么。我决定让一些东西更容易阅读和直观,但我似乎遇到了一些错误。基本上,该方法找到最大一半数字的最小值和下半部分数字的最大值,并对它们进行平均。这应该涵盖偶数和奇数长度的情况。

我尝试测试每一段代码,出于某种原因,我认为我所有的错误都来自于我试图找到中间值的第 6 行代码。我的案例需要涵盖偶数和奇数长度的列表,这就是为什么我同时拥有 med1med2 的原因。

这是我当前的代码:

SET @med1 = (SELECT min(lat_n)
FROM station
WHERE lat_n >= (SELECT lat_n
FROM station
ORDER BY lat_n ASC
LIMIT FLOOR((SELECT COUNT(*)/2 FROM station)), 1
)
);
SET @med2 = (SELECT max(lat_n)
FROM station
WHERE lat_n <= (SELECT lat_n
FROM station
ORDER BY lat_n DESC
LIMIT FLOOR((SELECT COUNT(*)/2 FROM station)), 1
)
);

select round((@med1 + @med2)/2,4)

和错误消息:

ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '((SELECT COUNT(*)/2 FROM station)), 1

我已经单独检查了代码的每一个“位”(选择计数(*)、下限、限制),但由于某种原因,当它们全部放在一起时,它不起作用。输出应该是表站中 lat_n 列的中位数,但我却收到此错误。预先非常感谢您。

最佳答案

cannot use calculations或 LIMIT 子句中的变量。有解决方法(可在链接中找到)。

关于MySQL:使用 "two halves"方法查找中位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55393734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com