在 SQL Server 中选择具有列最大值的行

在本文中,我们将通过示例介绍如何在 SQL Server 中选择具有列最大值的行。为此,我们将使用下面显示的数据

在 SQL Server 中选择具有列最大值的行 示例 1

如果您要返回组列以及最大值的列,则可以使用以下语句。正如您所看到的,我们使用了 Max 函数以及 Group By

SELECT Occupation
      ,MAX([Sales]) AS MaxSale
  FROM [Employee]
  GROUP BY Occupation

选择具有列最大值的行 示例 2

在此示例中,我们将展示如何选择具有最大值以及其他列的行。如果您想返回其他列(非分组列),这会很有用。

对于这个 SQL Server 示例,我们使用了 Inner Join 将 employee 表与其自身连接起来。

SELECT Emp.[EmpID]
      ,Emp.[FirstName]
      ,Emp.[LastName]
      ,Emp.[Education]
      ,Emp.[Occupation]
      ,Emp.[YearlyIncome]
      ,Emp.[Sales]
      ,Emp.[HireDate]
  FROM [Employee] AS Emp
INNER JOIN 
	(
		SELECT Occupation
		  ,MAX([Sales]) AS Sales
		FROM [Employee]
		GROUP BY Occupation
	) AS Emp2
		ON Emp.Occupation = Emp2.Occupation AND Emp.Sales = Emp2.Sales
Select Rows with Maximum Value on a Column 3

选择具有列最大值的行 示例 3

这是另一种方法。在这里,我们在 Where Clause 中使用了 Select statement

SELECT *
  FROM [Employee] AS Emp1
  WHERE Sales = 
	(	SELECT MAX([Sales]) AS Sales
		FROM [Employee] AS Emp2 WHERE Emp1.Occupation = Emp2.Occupation 
	)
Select Rows with Maximum Value on a Column 4

在此示例中,我们使用了 Left JoinIs Null

SELECT Emp.*
  FROM [Employee] AS Emp
LEFT JOIN [Employee] AS Emp2
		ON Emp.Occupation = Emp2.Occupation AND Emp.Sales < Emp2.Sales
		WHERE Emp2.EmpID IS NULL