如何在同一列上使用 SUM 和 MAX?

How to use SUM and MAX on the same column?

所以我有一个 SQL table,我需要找出购买最多的产品,这意味着我需要对所有产品进行 SUM 和分组产品数量:

SELECT PRODUCT_ID, SUM(QUANTITY) FROM PURCHASE GROUP BY PRODUCT_ID

但是,当我尝试查找购买量最大的产品时,出现错误:

SELECT MAX(QUANTITY) FROM(SELECT PRODUCT_ID, SUM(QUANTITY) FROM PURCHASE GROUP BY PRODUCT_ID)

有什么想法吗?

只需排序,仅保留最高记录:

SELECT PRODUCT_ID, SUM(QUANTITY) SUM_QUANTITY
FROM PURCHASE 
GROUP BY PRODUCT_ID 
ORDER BY SUM_QUANTITY DESC
LIMIT 1

实际语法可能因 RDBMS 而异。以上将适用于 MySQL 和 Postgres。

在 SQL 服务器中,您将使用 SELECT TOP (1) ... ORDER BY SUM_QUANTITY DESC

在 Oracle >= 12c 中,您将使用 SELECT ... ORDER BY SUM_QUANTITY DESC FETCH FIRST ROW ONLY.

您还必须首先考虑关系的可能性,根据您的要求和 RDBMS 有不同的策略。