【问题标题】:SUM with multiple UNION queries带有多个 UNION 查询的 SUM
【发布时间】:2020-03-26 16:17:55
【问题描述】:

有没有办法对多个 UNION 查询求和?我创建了多个表的 UNION,它返回一个包含多行的表,并且这些行中的每一行都显示一个薪水。

+-------------+--------+
| employee_ID | Salary |
+-----+-------+--------+
| 0001        | 630    |
| 0002        | 480    |
| 0003        | 600    |
| 0004        | 600    |
| 0005        | 600    |
+-----+----------------+

有没有一种方法可以在不创建 VIEW 的情况下从所有这些行(工资)中得出 SUM? 它看起来像这样:

    +-------------+--------+
    | employee_ID | Salary |
    +-----+-------+--------+
    | 0001        | 630    |
    | 0002        | 480    |
    | 0003        | 600    |
    | 0004        | 600    |
    | 0005        | 600    |
    |             | 2910   |
    +-----+----------------+

【问题讨论】:

    标签: mysql sql sum union


    【解决方案1】:

    你可以使用rollup:

    select employee_id, sum(salary) as salary
    from (<your union query here>) x
    group by employee_id with rollup;
    

    【讨论】:

    • with rollup ansi 合规吗?
    • @Andrew 。 . .我认为是这样。我很确定 grouping sets 是 ANSI,这是我通常使用的(但 MySQL 不支持)。
    • 我对与 MySQL 中的分组相关的任何事情都感到紧张,因为它允许您在没有分组依据的情况下进行聚合。
    • 分组集是ANSI SQL,也有,不过和上面有点不同。
    • @jarlh 。 . .谢谢。
    【解决方案2】:

    嗯,理想情况下,我会在我的演示工具中处理这样的事情。但根据您的简单示例:

    select
    employee_id,
    sum(salary) as salary
    from
    <your table>
    group by employee_id
    UNION ALL
    select
    '' , -- or 'TOTAL' or whatever
    sum(salary)
    from
    <your table>
    

    【讨论】:

    • 是的,但我使用了不同的表,所以我不知道在 FROM 部分放什么:
    • select '' , -- 或 'TOTAL' 或 中的任何总和(薪水)
    • 在这种情况下,戈登的解决方案会更容易。
    猜你喜欢
    • 2014-02-05
    • 1970-01-01
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-01
    相关资源
    最近更新 更多