gpt4 book ai didi

mysql - 根据不同的条件选择查询

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

假设我有一张如下所示的表格。我想根据两个条件查询表。如果 id 的计数为负,我想根据该 id 获得最大结果。另外,如果一个 id 只有正数,那么我想根据该 id 获取最小值。

id         tcount
--- ------
1 -5
1 -10
1 5
2 20
2 30
3 -40
3 -50

所以我想要得到的结果是这样的

id         tcount
-- -----
1 -5
2 20
3 -40

我的查询看起来像这样,我需要添加更多逻辑

SELECT id, max(count) as tcount
FROM atable
WHERE count < 0
GROUP by id

最佳答案

让我们看看这是否有效。要获得最小/最大负值和最小/最大正值,case ... end 可以帮助您:

select id
, min(case when tcount < 0 then tcount end) -- Minimum negative
, max(case when tcount < 0 then tcount end) -- Maximum negative
, min(case when tcount >= 0 then tcount end) -- Minimum non-negative
, max(case when tcount >= 0 then tcount end) -- Maximum non-negative
, min(tcount)
, max(tcount)
from atable
group by id;
<小时/>

再次阅读你的问题(我读了两到三遍)后,我发现你想要每个组的数字接近于零。所以:

select id
, min(abs(tcount)) * if(min(tcount) = min(abs(tcount)), 1, -1)
from atable
group by id;

解释:

min(abs(tcount)) 将获得 tcount 绝对值的最小值(即最接近零的值)。剩下的就是获得该数字的正确符号,这就是 if() 的用途:如果该数字的绝对值的最小值等于该数字的最小值,则该数字为正数(因为只有当 min(tcount) 大于零或等于零时才会发生这种情况),在其他情况下,该数字为负数。

关于mysql - 根据不同的条件选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25857803/

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