SUM UP 两列,然后在 SQL Server 中找到 find MAX 值

SUM UP two columns and then find the find MAX value in SQL Server

我正在使用 Microsoft SQL 服务器并希望找到 E_IDE_Name,其中 T1+T2 具有 MAX 值。

我有两个步骤来达到必要的结果:

  1. 求 table
  2. 中两列的总和作为“总计”
  3. 从总计中找到包含最大值的行

Table 名为“table1”的内容如下所示(T2 可能包含 NULL 值):

E_ID E_Name T1 T2
1 Alice 55 50
2 Morgan 60 40
3 John 65
4 Monica 30 10
5 Jessica 25
6 Smith 20 5

这是我试过的方法:

SELECT 
    E_ID, E_Name, MAX(total) AS max_t
FROM 
    (SELECT  
         E_ID, E_Name, ISNULL(T1, 0) + ISNULL(T2, 0) AS total
     FROM    
         table1) AS Q1;

我收到这个错误:

'Q1.E_ID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

只有当我将 MAX(total) AS max_t 保留在 SELECT 部分时,我才会得到结果,但我还希望有列 E_IDE_Name.

试试这个 - 只需按 Total 列降序排序,然后取结果中的第一行:

SELECT TOP (1)
    Q1.E_ID, Q1.E_Name, Q1.Total
FROM 
    (SELECT  
         E_ID, E_Name, ISNULL(T1, 0) + ISNULL(T2, 0) AS Total
     FROM    
         table1) AS Q1
ORDER BY
    Q1.Total DESC;

您不需要子查询:

SELECT 
    TOP 1
    E_Name
FROM 
    tab
ORDER BY 
    COALESCE(T1,0)+COALESCE(T2,0) DESC

Fiddle 这里:https://dbfiddle.uk/?rdbms=sqlserver_2019l&fiddle=0cca8f7ca28dc45dd1ece505f9176bdc.

您可以使用查询:

SELECT top 1 E_ID, E_Name, (T1+T2) as Total 
FROM Table1 
GROUP BY E_ID,E_Name 
ORDER BY Total desc

SELECT

TOP (1) , E_ID, E_Name, ISNULL(T1, 0) + ISNULL(T2,0) 总计

来自 表 1

订购方式 总计 DESC;

如果您想查看所有记录,只需应用 GROUP BY 子句即可。

SELECT 
    E_ID
  , E_Name
  , MAX(total) AS max_t
FROM 
    (SELECT  
         E_ID
       , E_Name
       , ISNULL(T1, 0) + ISNULL(T2, 0) AS total
     FROM    
         table1
    ) AS Q1
GROUP BY
    E_ID
  , E_Name;

如果您只想查看数据集中的最大值,您只需应用 TOP 1(对于结果中的一条记录),然后将 T1 和 T2 相加作为总和 然后应用 ORDER BY DESC;

SELECT TOP 1
    E_ID
  , E_Name
  , (T1 + T2) AS total
FROM 
    table1
ORDER BY
    total DESC