PG数据库:分组后取每组第一条数据
在PostgreSQL中,要获取每组的第一条数据,可以使用窗口函数ROW_NUMBER()
配合PARTITION BY
语句。以下是一个示例SQL查询,它将按照group_column
进行分组,并且每组只取第一条数据:
SELECT *
FROM (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY group_column ORDER BY order_column) AS rn
FROM
your_table
) subquery
WHERE rn = 1;
在这个查询中,group_column
是你用来分组的字段,order_column
是你在分组内部想要基于它来排序的字段(比如一个日期或者ID字段)。your_table
是你的数据表名。subquery
内部的查询会为每个分组内的数据分配一个序号(rn
),按照order_column
排序。外层查询通过WHERE rn = 1
条件筛选出每个分组中排在第一的数据。
评论已关闭