添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

oracle分组求和排序取第一条

针对您的问题,您可以使用Oracle中的分组函数和窗口函数来完成。以下是一种可能的解决方案:

假设您有一个表,名为table,其中包含字段id、name、group_id和value,您想要按照group_id分组,对value求和,并按照sum(value)降序排序,然后取每组的第一条记录,可以使用以下查询语句:

SELECT id, name, group_id, value
FROM (
  SELECT id, name, group_id, value, 
    ROW_NUMBER() OVER (PARTITION BY group_id ORDER BY sum(value) DESC) rn
  FROM table
  GROUP BY id, name, group_id, value
WHERE rn = 1;

上面的查询语句使用了窗口函数ROW_NUMBER()来给每个分组的记录编号,然后按照sum(value)的降序排序,最后取每个分组中编号为1的记录,也就是排名最高的记录。

需要注意的是,这个查询语句中,子查询先对数据进行分组和求和,然后再用窗口函数进行排序和编号,最后再通过外层查询语句选择每组的第一条记录,因此相比较普通的查询语句,它的性能会有一些损失,特别是在数据量比较大时。

  •