真的很奇怪的标题开头。但你完全理解这个解释。
直截了当地说,我有一张表来跟踪不同物品的销售情况。
+ -----+-------------+-------+----------+ | Name | Sell_Date | Price | Quantity | + -----+-------------+-------+----------+ | Doll | 14-JAN-2005 | 12 | 2 | | Bike | 07-FEB-2013 | 450 | 1 | | Doll | 15-SEP-2016 | 12 | 5 | + -----+-------------+-------+----------+
示例中不需要更多。
因此,使用此表,我想选择项目的名称并按销售数量(升序)对它们进行排序。考虑到这一点,结果应该是Bike,然后是Doll。我的问题是某些项目可能会出现多次,因此需要添加其数量值。
因为我是初学者,如果我需要使用WITH方法,我很困惑我应该在哪里做SUM函数,尤其是我将如何为每个特定项目执行
答案 0 :(得分:2)
您需要SUM和GROUP BY:
SELECT NAME, SUM(QUANTITY)
FROM YOUR_TABLE
GROUP BY NAME
ORDER BY SUM(QUANTITY) ASC
答案 1 :(得分:2)
如果要在特定级别聚合 - 在这种情况下,在name-级别求和,则需要使用group by子句。但是您需要明确在哪个级别进行分组并在选择字段列表中输入它们。 对于你的例子:
SELECT
name,
sum(Quantity) as tot_Quantity
FROM table
GROUP BY name -- this will give you per name the total quantity
ORDER BY 2 desc -- outputs with all the rows ordered descending by the second field in the select list
在更精细的级别聚合:
SELECT
name,
sell_date,
sum(Quantity) as tot_Quantity
FROM table
GROUP BY name,sell_date -- this will give you per name and date, total quantity
ORDER BY 3 desc -- outputs with all the rows ordered descending by the third field