renchuang 2024-07-03 13:01 采纳率: 100%
浏览 148
已结题

达梦数据库中对数据分组后取得分组中任一条记录

达梦数据库中对数据分组后取得分组中任一条记录,好图片中对D进行分组,然后取分组后(0,1)中任一条记录,请问sql语句怎样实现?

img

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-07-03 13:01
    关注

    引自免费微信小程序:皆我百晓生

    在达梦数据库中,如果你想要根据列D对数据进行分组,然后从每个分组中获取(基于某些条件如最大或最小的行)任一条记录,可以使用子查询结合聚合函数来实现。假设你想获取每个分组中的最小行(基于列D的值),你可以使用如下的SQL语句:

    假设你的表名为your_table,列名为A, B, C, D:

    SELECT A, B, C, D
    FROM (
        SELECT A, B, C, D, ROW_NUMBER() OVER (PARTITION BY D ORDER BY D) AS rn
        FROM your_table
    ) AS subquery
    WHERE rn = 1;
    

    这个查询首先对原始数据表使用窗口函数ROW_NUMBER(),该函数会对每个分组(通过PARTITION BY D指定)中的记录进行编号,编号依据是列D的值(通过ORDER BY D指定)。编号是连续的整数,从最小值的记录开始为第一行(rn=1),然后是第二行(rn=2),以此类推。然后外部查询会选择每个分组中编号为1的记录(即每个分组的最小记录)。这样你就可以得到每个分组中的一条记录。请注意这里的ORDER BY D确保你得到的是每个分组的某一条记录,如果组内排序重要的话。如果组内顺序不重要,你可以省略ORDER BY子句。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月11日
  • 已采纳回答 7月3日
  • 创建了问题 7月3日