如何使用示例选择每个 SQL Group By 组的第一行。对于此选择每个组的第一行示例,我们使用下面显示的数据。

SQL ROW_NUMBER 函数示例
SQL ROW_NUMBER 函数允许您为分区中的每个记录分配排名编号。在此示例中,我们将展示如何选择每个 SQL 组的第一行。以下查询将
- 首先,按职业对数据进行分区,并使用年收入分配排名编号。
- 接下来,ROW_NUMBER 将从每个组中选择第一行。
-- Using CTE to save the grouping data
WITH groups AS (
SELECT [FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,ROW_NUMBER() OVER (
PARTITION BY [Occupation]
ORDER BY [YearlyIncome] DESC
) AS [ROW NUMBER]
FROM [Customers]
)
SELECT * FROM groups
WHERE groups.[ROW NUMBER] = 1
让我向您展示 SQL Server 输出中的 Select 语句,它位于 CTE 中。

我们提取所有行号等于 1 的记录。

下面的语句使用其职业将数据划分为分区,然后我们按其 [年收入] 的降序对分区数据进行排序。从上面可以看出,我们有四个分区。
PARTITION BY [Occupation] ORDER BY [YearlyIncome] DESC
接下来,我们使用 ROW_NUMBER() 函数为记录分配排名。我建议您参考 ROW_NUMBER 文章。
ROW_NUMBER() OVER (
PARTITION BY [Occupation]
ORDER BY [YearlyIncome] DESC
) AS [ROW NUMBER]
选择每个组的第一行示例 2
在此示例中,我们使用 子查询 来选择每个 Group By 组的第一行。
SELECT * FROM (
SELECT [FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,ROW_NUMBER() OVER (
PARTITION BY [Occupation]
ORDER BY [YearlyIncome] DESC
) AS [ROW NUMBER]
FROM [Customers]
) groups
WHERE groups.[ROW NUMBER] = 1
ORDER BY groups.YearlyIncome DESC
