我有点问题。
我的表是:
Bill Product ID Units Sold
----|-----------|------------
1 | 10 | 25
1 | 20 | 30
2 | 30 | 11
3 | 40 | 40
3 | 20 | 20
我想SELECT
销售单位最多的产品;在此示例中,它应该是ID为20的产品,显示50个单位。
我试过这个:
SELECT
SUM(pv."Units sold")
FROM
"Products" pv
GROUP BY
pv.Product ID;
但这显示了所有产品,我如何只选择销售量最多的产品?
答案 0 :(得分:3)
暂时不考虑销售多件产品的可能性,您可以随时按总和对结果进行排序,先排序最高,然后排第一行:
SELECT pv."Product ID", SUM(pv."Units sold")
FROM "Products" pv
GROUP BY pv."Product ID"
ORDER BY SUM(pv."Units sold") DESC
LIMIT 1
我不太确定列和表名的双引号语法是否有效 - 确切的语法将取决于您的特定RDBMS。
现在,如果您希望在多个产品具有相同总和时获得多行,那么SQL将变得更复杂:
SELECT pv.`Product ID`, SUM(pv.`Units sold`)
FROM `Products` pv
GROUP BY pv.`Product ID`
HAVING SUM(pv.`Units sold`) = (
select max(sums)
from (
SELECT SUM(pv2.`Units sold`) as "sums"
FROM `Products` pv2
GROUP BY pv2.`Product ID`
) as subq
)
答案 1 :(得分:1)
SELECT SUM(pv."Units sold") as `sum`
FROM "Products" pv
group by pv.Product ID
ORDER BY sum DESC
LIMIT 1
限制1 +订单
答案 2 :(得分:0)
最佳和有效的方法是最大功能
这里是Max函数的通用语法
SELECT MAX(ID) AS id
FROM Products;
并在你的案例中
SELECT MAX(Units Sold) from products
以下是Query中MIN和MAX函数的完整参考 Click Here