oracle分组排序后取第一条
在Oracle数据库中,如果您想要对结果进行分组并在每个分组中取出排序后的第一条记录,您可以使用ROW_NUMBER()
窗口函数来实现。这里是一个示例SQL查询,它将按照某个字段分组,并且在每个分组内按照另一个字段排序,然后选择每个分组中ROW_NUMBER()
值为1的记录。
SELECT *
FROM (
SELECT
t.*,
ROW_NUMBER() OVER (PARTITION BY 分组字段 ORDER BY 排序字段) AS rn
FROM 表名 t
) WHERE rn = 1;
请将分组字段
替换为您想要分组的字段名,将排序字段
替换为您想要在每个分组内排序的字段名,将表名
替换为您的表名。
例如,如果您有一个名为sales
的表,该表有year
字段用于分组和revenue
字段用于排序,您可以这样写:
SELECT *
FROM (
SELECT
s.*,
ROW_NUMBER() OVER (PARTITION BY year ORDER BY revenue DESC) AS rn
FROM sales s
) WHERE rn = 1;
这个查询将返回每年收入最高的记录。
评论已关闭