【问题标题】:How to sum up one of the column in MySQL table based on other columns如何根据其他列总结MySQL表中的一列
【发布时间】:2021-01-03 00:32:48
【问题描述】:

以下是我拥有的数据。

mysql> SELECT * FROM base
    -> ;
+----------+-----------+-------+------+
| ORD_DATE | PROD_CODE | WIDTH | QTY  |
+----------+-----------+-------+------+
| 20101001 | 0001      |    90 |    3 |
| 20101001 | 0001      |    90 |    3 |
| 20101001 | 0001      |   100 |    3 |
| 20101001 | 0001      |   100 |    3 |
| 20101001 | 0001      |   110 |   12 |
| 20101001 | 0001      |   120 |    3 |
| 20101001 | 0001      |   120 |    3 |
...
| 20101001 | 0002      |   955 |    5 |
| 20101001 | 0002      |   995 |    7 |
| 20101006 | 0001      |   385 |    6 |
| 20101006 | 0001      |   410 |    6 |
+----------+-----------+-------+------+

我想通过添加 (QTY) 具有相同 (ORD_DATE、PROD_CODE、WIDTH) 的重复行来更新上表。

我想得到如下表格数据。

+----------+-----------+-------+------+
| ORD_DATE | PROD_CODE | WIDTH | QTY  |
+----------+-----------+-------+------+
| 20101001 | 0001      |    90 |    6 |
| 20101001 | 0001      |   100 |    6 |
| 20101001 | 0001      |   110 |   12 |
| 20101001 | 0001      |   120 |    6 |
...
| 20101001 | 0002      |   955 |    5 |
| 20101001 | 0002      |   995 |    7 |
| 20101006 | 0001      |   385 |    6 |
| 20101006 | 0001      |   410 |    6 |
+----------+-----------+-------+------+

请你帮忙。谢谢。

【问题讨论】:

    标签: mysql sum conditional-statements


    【解决方案1】:

    如果您想保持表不变,并且只想选择值作为第二个表,您可以使用函数 SUM 和子句 group by。

    例如

    SELECT ORD_DATE, PROD_CODE, WIDTH, SUM(QTY) FROM base
    GROUP BY ORD_DATE, PROD_CODE, WIDTH;
    

    但是如果你想更新原始表,你可以使用上面的选择,删除表的所有行,然后使用从选择中检索到的信息重新插入。

    【讨论】:

      【解决方案2】:
      select ORD_DATE, PROD_CODE, WIDTH, sum(QTY) from base group by ORD_DATE, PROD_CODE, WIDTH;
      

      可以参考demo

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-08
        • 2018-09-24
        • 1970-01-01
        • 2021-10-05
        • 2016-12-22
        相关资源
        最近更新 更多