嗨,我需要获取行的总和,按供应商和项目名称 mysql 分组

Posted

技术标签:

【中文标题】嗨,我需要获取行的总和,按供应商和项目名称 mysql 分组【英文标题】:hi i need to get a sum of rows , group by with supplier and item name mysql 【发布时间】:2020-08-30 22:24:13 【问题描述】:

我的数据库会是这样的

id|item_name|item_qty|added_by
1 |panadol  |200     |1
2 |panadol  |300     |2
3 |panadol  |100     |1
4 |biner    |100     |1

我需要的输出应该是这样的

id|item_name|item_qty|added_by|total
1 |panadol  |300     |1       |600
2 |panadol  |300     |2       |600
3 |biner    |100     |1       |100

我需要可用产品的总数以及每个供应商关于每种产品的总数

Medicine:"Panadol",
1(supplier ID):300,
2(suppID):300,
Sum:600

Medicine:"biner",
1(supplier ID):100,
Sum:100

【问题讨论】:

【参考方案1】:

您可以使用聚合和窗口函数 - 如果您运行的是 mysql 8.0:

select
    item_name,
    sum(item_qty) item_qty,
    added_by,
    sum(sum(item_qty)) over(partition by item_name) total
from mytable
group by item_name, added_by

在早期版本中,您可以join 两个聚合查询,或使用相关子查询:

select
    item_name,
    sum(item_qty) item_qty,
    added_by,
    (select sum(t1.item_qty) from mytable t1 where t1.item_name = t.item_name) total
from mytable t
group by item_name, added_by

【讨论】:

以上是关于嗨,我需要获取行的总和,按供应商和项目名称 mysql 分组的主要内容,如果未能解决你的问题,请参考以下文章

合并相同名称并获取支持数据的总和 - Reprex

mysql用总和加入3个表给出错误的结果

Laravel - 从不同的表中获取总和并计算

获取内部连接表中两行的总和

如何获取每年的积分名称和最大总和值?

如何从具有子句的 DB2 中获取 count(*) 总数?