gpt4 book ai didi

MySQL,如何选择两个值之和最小的行

转载 作者:行者123 更新时间:2023-11-29 01:35:12 25 4
gpt4 key购买 nike

这是我的 table :

mysql> SELECT *  FROM tms;
+----+---------------------+------+-------+-------+-------+
| ID | tid | tse1 | tse2 | bse1 | bse2 |
+----+---------------------+------+-------+-------+-------+
| 1 | 2017-01-01 00:00:00 | -757 | -1052 | -4200 | -940 |
| 2 | 2017-01-01 01:00:00 | -752 | -1058 | -4175 | -882 |
| 3 | 2017-01-01 02:00:00 | -754 | -1068 | -4112 | -906 |
| 4 | 2017-01-01 03:00:00 | -754 | -1057 | -4135 | -905 |
| 5 | 2017-01-01 04:00:00 | -766 | -1066 | -4140 | -911 |
| 6 | 2017-01-01 05:00:00 | -767 | -1084 | -4156 | -916 |
| 7 | 2017-01-01 06:00:00 | -763 | -1092 | -4225 | -924 |
| 8 | 2017-01-01 07:00:00 | -756 | -1086 | -4322 | -973 |
| 9 | 2017-01-01 08:00:00 | -779 | -1105 | -4415 | -989 |
| 10 | 2017-01-01 09:00:00 | -781 | -1114 | -4459 | -985 |
| 11 | 2017-01-01 10:00:00 | -778 | -1124 | -4579 | -1009 |
| 12 | 2017-01-01 11:00:00 | -783 | -1134 | -4691 | -1010 |
+----+---------------------+------+-------+-------+-------+

现在我想要 bse1+bse2 具有最低值的行。在我的例子中,ID 3 的值为 -5018。

我以为这样就可以了,但是运气不好......

mysql> SELECT id,MIN(bse1+bse2) FROM tms;
ERROR 1140 (42000): In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column 'testmaxsum.tms.ID'; this is incompatible with sql_mode=only_full_group_by

对 SQL 完全陌生,所以请不要对我太苛刻。

最佳答案

为了完善已经给出的答案,我将给出一个适用于 MySQL 8+ 版本的选项。我们可以在这里尝试使用 RANK 分析函数:

SELECT ID
FROM
(
SELECT *, RANK() OVER (ORDER BY bse1 + bse2 DESC) rank
FROM tms
) t
WHERE rank = 1;

Demo

这种方法还有一个额外的好处,它会返回 所有 记录,这些记录恰好与 bse1 + bse2 总和的最大值相关联。

该演示更改了您的数据集,使两条记录的总和最大。

关于MySQL,如何选择两个值之和最小的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52467439/

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