gpt4 book ai didi

mysql - 组内的 MAX 聚合

转载 作者:可可西里 更新时间:2023-11-01 07:31:26 25 4
gpt4 key购买 nike

我有以下数据

 GROUP_ID   INDEX
NULL 1
1 2
NULL 3
1 4
NULL 5
2 6
2 7

我想要的是获取一个包含以下内容的字段:

  • 如果 group_id IS NOT NULL,则为该组中的最小索引
  • 如果 group_id 为 NULL,则从该行开始索引

上述示例的结果数据集为:

 GROUP_ID   INDEX  GROUP_INDEX_MIN
NULL 1 1
1 2 2
NULL 3 3
1 4 2
NULL 5 5
2 6 6
2 7 6

在 Oracle 中,我会通过使用 (CASE WHEN group_id IS NOT NULL THEN MIN(index) OVER (PARTITION BY group_id) ELSE group_id END) 来解决这个问题,但由于 MySQL 不支持,我真的不知道如何继续:)我可以通过使用子查询来解决这个问题,该子查询检索每个组的最小值,然后加入它,但我认为必须有一个更优雅的解决方案。

如果您需要更多信息,请询问。谢谢。

最佳答案

只需创建一个表示最小 Group_index_min (minT) 的内联 View ,然后加入它并在 group_ID 和最小值之间进行合并

SELECT t.group_id, 
t.index,
Coalesce(t.group_id, minTgroup_index_min) group_index_min
FROM yourtable t
LEFT JOIN (SELECT group_id,
MIN(index) group_index_min
FROM yourtable
GROUP BY
group_id) minT
ON t.group_id = minT.group_id

关于mysql - 组内的 MAX 聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7860899/

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