表名为"OrderDetails",列如下所示:

OrderDetailID || ProductID || ProductName || OrderQuantity

我试图 Select 多个列并按ProductID分组,同时计算OrderQuantity的总和.

 Select ProductID,ProductName,OrderQuantity Sum(OrderQuantity)
 from OrderDetails Group By ProductID

当然,这段代码给出了一个错误.我必须将其他列名添加到group by,但这不是我想要的,因为我的数据有很多项,所以只有results are unexpected that way.

示例数据查询:

ProductID、ProductName、OrderDetails中的OrderQuantity

结果如下:

 ProductID     ProductName    OrderQuantity
    1001          abc               5
    1002          abc               23    (ProductNames can be same)
    2002          xyz               8
    3004          ytp               15
    4001          aze               19
    1001          abc               7     (2nd row of same ProductID)

预期结果:

 ProductID     ProductName    OrderQuantity
    1001          abc               12    (group by productID while summing)
    1002          abc               23
    2002          xyz               8
    3004          ytp               15
    4001          aze               19

由于ProductName不唯一,如何 Select 多个列并按ProductID列分组?

进行此操作时,还要获取OrderQuantity列的总和.

推荐答案

当我有多列 Select 时,我使用这个技巧按一列分组:

SELECT MAX(id) AS id,
    Nume,
    MAX(intrare) AS intrare,
    MAX(iesire) AS iesire,
    MAX(intrare-iesire) AS stoc,
    MAX(data) AS data
FROM Produse
GROUP BY Nume
ORDER BY Nume

这很管用.

Sql相关问答推荐

使用交叉应用透视表在SQL中转换分段时间段&

用于匹配红旗和绿旗的SQL查询

如果开始期间不存在PostgresSql回填数据

没有循环的SQL更新多个XML node 值

在Oracle中,如何删除具有特定值的行,仅当它是重复的行?

如何更新SQLite数据库中的表?

最近3个月收到的邮箱总数

在子窗口SQL Presto中使用特定条件执行值计数

更改重复值的情况

AdventureWorks 查询

匹配 H[0-9][0-9] 但不匹配除字母 H 之外的任何字母

使用临时表判断记录是否存在 - 如果存在则执行相同的操作

SQL 根据前一天的最大值计算每天的值数

每次计数器增加时通过运行总重置进行分组

Postgres更新增量之间的差异

在Snowflake中如何使用SQL对版本字符串进行排序?

在 SQL 的每行选项中 Select 最大值

奇怪的甲骨文行为

连接表时避免重复

从 Pyspark 转换为具有多个分组条件的语句时的情况