Mysql 若同一产品在我的库存中具有相同的价格,如何编写查询以显示数量之和?
我的桌子看起来像Mysql 若同一产品在我的库存中具有相同的价格,如何编写查询以显示数量之和?,mysql,sql,Mysql,Sql,我的桌子看起来像 Product Price Qty A 100 10 B 200 30 A 100 15 A 150 20 我的表中的产品A重复了价格100的两倍。如果产品的价格值相同,则应添加数量。我的结果如下 Product Price Qty A
Product Price Qty
A 100 10
B 200 30
A 100 15
A 150 20
我的表中的产品A重复了价格100的两倍。如果产品的价格值相同,则应添加数量。我的结果如下
Product Price Qty
A 100 25
A 150 20
B 200 30
将sum()
函数用于按产品和价格分组
select t.product, t.price,sum(t.qty) as Qty from your_table t
group by t.product,t.price
只需使用
按产品分组,价格
和总和
聚合为:
select product, price, sum(qty)
from tab
group by product, price
order by product, price;
orderby
这里是多余的,因为groupby
无论如何都会隐式地这样做(在问题中也没有明确要求,所以有点分散回答的注意力)@eggyal很高兴了解这个属性,谢谢order by
是正确排序所必需的,即使查询有group by
fororacle
db作为示例,但我刚才也尝试了mysql
隐式执行您提到的操作。@eggyal不,不会。手册在这一点上非常具体。@eggyal,嗯?5.7下的注释说:notegroupby默认隐式排序(即,在groupby列没有ASC或DESC指示符的情况下)。但是,不推荐使用隐式GROUP BY排序(即,在没有ASC或DESC指示符的情况下进行排序)或GROUP BY的显式排序(即,对GROUP BY列使用显式ASC或DESC指示符)。要生成给定的排序顺序,请提供order BY子句。
在DBMS中,如果没有明确的order BY,则无法保证排序结果集。如果它当前返回“正确”的顺序,并且在下一个版本中对内部实现进行了更改,那么您不能声称这是一个bug(这种情况经常发生),工作正常,谢谢。