Select First Row in each SQL Group By group

How to Select First Row in each SQL Group By group with example. For this SQL Select first row in each group example, We use the below shown data

Customer Table Data 1

SQL ROW_NUMBER Function Example

The SQL ROW_NUMBER Function allows you to assign the rank number to each record present in a partition. In this example, we show you how to Select First Row from each SQL Group. The following Query will

  • First, partition the data by Occupation and assign the rank number using the yearly income.
  • Next, ROW_NUMBER is going to select the First row from each group.
-- Select First Row in each SQL Group By group

-- 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

Let me show you the SQL Server output of the Select statement inside the CTE

Select First Row in each SQL Group By group 2

We are extracting all the records whose Row Number is equal to 1.

Select First Row in each SQL Group By group 3

The below statement divides the data into partition using their Occupation, and then we sort the partitioned data in the descending order using their [yearly income]. From the above you can observe, We got four partitions

PARTITION BY [Occupation] 
ORDER BY [YearlyIncome] DESC

Next, we used the ROW_NUMBER() function to assign the rankings to the records. I suggest you refer to the ROW_NUMBER article.

ROW_NUMBER() OVER (
              PARTITION BY [Occupation] 
              ORDER BY [YearlyIncome] DESC
             ) AS [ROW NUMBER]

Select First Row in each Group Example 2

In this example, we are using the subquery to Select First Row in each Group By group.

-- Select First Row in each SQL Group By group

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
Select First Row in each SQL Group By group 4
Categories SQL