gpt4 book ai didi

使用 GROUP BY 跨多列的 SQL MIN

转载 作者:行者123 更新时间:2023-12-04 14:39:10 24 4
gpt4 key购买 nike

我正在尝试使用包含以下信息的表格:

+----+---+---+
| ID | X | Y |
+----+---+---+
| A | 1 | 3 |
| A | 1 | 1 |
| A | 1 | 2 |
| A | 1 | 7 |
| B | 2 | 2 |
| B | 3 | 3 |
| B | 1 | 9 |
| B | 2 | 4 |
| B | 2 | 1 |
| C | 1 | 1 |
+----+---+---+

我希望能够在两列中选择最小值,按第一列分组 - “X”列比 Y 列更重要。例如,查询应该返回如下内容:
+----+---+---+
| ID | X | Y |
+----+---+---+
| A | 1 | 1 |
| B | 1 | 9 |
| C | 1 | 1 |
+----+---+---+

有任何想法吗?到目前为止,我已经经历了数十篇帖子和实验,但没有运气。

谢谢,
詹姆士

最佳答案

您似乎想要具有最小 x 值的行。并且,如果 x 上有重复项,则取最小 y 的那个。

为此,请使用 row_number() :

select id, x, y
from (select t.*,
row_number() over (partition by id order by x, y) as seqnum
from t
) t
where seqnum = 1

如果你的数据库不支持窗口函数,你仍然可以用 SQL 来表达:
select t.id, t.x, min(t.y)
from t join
(select id, MIN(x) as minx
from t
group by id
) tmin
on t.id = tmin.id and t.x = tmin.minx
group by t.id, t.x

关于使用 GROUP BY 跨多列的 SQL MIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15164273/

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