如何获得多个相同的最大值

How to get multiple identical maximum values

我正在尝试构建一个查询,该查询为我提供了一些拥有最大金额总和的用户。我可以通过 limit 1 获得最大值。但是由于多个用户可能具有相同的最大值,我该如何实现呢?

例如我有 table 作为 ID, CONTACT_ID, ..., AMOUNT, ....

目前我正在使用这种查询:

SELECT SUM(AMOUNT) AS total,CONTACT_ID 
    FROM TABLE 
    WHERE ID = 1  
    GROUP BY CONTACT_ID     
    ORDER BY total DESC limit 1

如果我尝试使用 MAX() 函数。它给了我所有的行而不是最大值。

SELECT total,CONTACT_ID FROM
(SELECT SUM(AMOUNT) AS total,CONTACT_ID 
    FROM TABLE 
    WHERE ID = 1  
    GROUP BY CONTACT_ID     
    ORDER BY total DESC)
GROUP BY CONTACT_ID
HAVING total = MAX(total)

乍一看,我会使用次要请求,例如:

SELECT SUM(AMOUNT) AS total,CONTACT_ID 
    FROM TABLE 
    WHERE ID = 1
    AND total=(SELECT MAX(SUM(AMOUNT)) FROM TABLE GROUP BY CONTACT_ID)
    GROUP BY CONTACT_ID     
    ORDER BY total DESC

注意:WHERE ID = 1;来自您的第一个请求

HAVING 在聚合完成后应用。因此,每个组中的 MAX(total) 行已经被选中,这意味着 剩下的唯一 total 值是 最大值。

您需要分两步完成此操作:首先确定最大总数,然后获取具有该值的所有行:

SELECT total, CONTACT_ID
FROM (SELECT SUM(AMOUNT) AS total, CONTACT_ID 
      FROM MyTable 
      WHERE ID = 1  
      GROUP BY CONTACT_ID)
WHERE total = (SELECT SUM(AMOUNT)
               FROM MyTable 
               WHERE ID = 1  
               GROUP BY CONTACT_ID
               ORDER BY 1 DESC
               LIMIT 1);