在MySQL中按列值进行SUM

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在MySQL中按列值进行SUM相关的知识,希望对你有一定的参考价值。

我有这个表“a”:

ID | NUMORD | ITEMID
---------------------
1  |   1    |  4
2  |   1    |  5
3  |   1    |  6

而不是这个表“b”

ID | NUMORD | ITEMID | QT
--------------------------
1  |   1    |  4     | 2
2  |   1    |  4     | 1
3  |   1    |  5     | 3
4  |   1    |  6     | 1
5  |   1    |  5     | 2

我需要这样的结果:

ID | NUMORD | ITEMID | QT
--------------------------
1  |   1    |  4     | 3
2  |   1    |  5     | 5
3  |   1    |  6     | 1

如果我按第一个表上的NUMORD分组然后按SUM,则显示SUM OF“QT”。我怎么能得到我的结果?谢谢

答案

首先,你需要NUMORD和ITEMID的一些:

SELECT NUMORD,ITEMID, SUM(QT)
FROM tableB
GROUP BY NUMORD,ITEMID

然后使用JOIN:

SELECT a.ID, b.NUMORD, b.ITEMID, b.QT
FROM tableA a
INNER JOIN (
 SELECT NUMORD,ITEMID, SUM(QT)
 FROM tableB
 GROUP BY NUMORD,ITEMID
) AS b ON b.NUMORD = a.NUMORD AND b.ITEMID = a.ITEMID

NOTA:您的数据库模式似乎有点奇怪为什么2个表具有几乎相同的列?

以上是关于在MySQL中按列值进行SUM的主要内容,如果未能解决你的问题,请参考以下文章

按列值对 MySQL 表进行分区

Power Query M - 使用自定义聚合(百分位)按列值分组

按列值分组的列值更新mysql排名

从 MySQL 中的时间戳排序表中按列选择第一个和最后一个匹配项

在C#中按列对二维数组进行排序

使用 NaN 在 pandas 中按列对数据进行 Winsorizing