如何在同一列上使用 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 有不同的策略。
所以我有一个 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 有不同的策略。