如何在表SQL中选择最大行?

时间:2014-04-23 19:37:44

标签: sql max row

我有点问题。

我的表是:

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;

但这显示了所有产品,我如何只选择销售量最多的产品?

3 个答案:

答案 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
)

这是sqlfiddle

答案 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