将 SUM 与 UNION 结合使用

Using SUM with UNION

我整天都在研究这个问题,尝试了各种解决方案,但就是无法解决任何问题。我不认为这一切都那么复杂。我有两个具有公共字段的 table,其中之一是 'jobamount'。两个 table 是 'LiveMusic' 和 'VO'。我只是想使用 UNION 获取每个 table 的所有值的总和。所以,我现在的基本陈述是:

SELECT SUM(jobamount) FROM LiveMusic WHERE jobdate LIKE '2019%'
UNION ALL
SELECT SUM(jobamount) FROM VO WHERE jobdate LIKE '2019%'

这很好用,我得到了两个结果,每个 table 的所有值的总和。我如何 SUM 这些,GROUP 他们,无论如何?我只需要将它们合二为一。非常感谢!

您可以求和:

SELECT SUM(jobsum) AS totalsum FROM (
SELECT SUM(jobamount) AS jobsum FROM LiveMusic WHERE jobdate LIKE '2019%' UNION ALL SELECT SUM(jobamount) AS jobsum FROM VO WHERE jobdate LIKE '2019%'
) sums;

或对所有值求和:

SELECT SUM(jobamount) AS totalsum FROM (
SELECT jobamount FROM LiveMusic WHERE jobdate LIKE '2019%' UNION ALL SELECT jobamount AS jobsum FROM VO WHERE jobdate LIKE '2019%'
) jobamounts;

您可以对两个查询 运行 EXPLAIN 来查看哪个 运行 对您来说更快。

您可以使用 subquery:

SELECT SUM(X.jobamount) 
  FROM (
        SELECT jobamount FROM LiveMusic WHERE jobdate LIKE '2019%'
        UNION ALL
        SELECT jobamount FROM VO        WHERE jobdate LIKE '2019%'
       ) X

像这样..

SELECT
    SUM(amount_sum)
FROM
    (
        SELECT
            SUM(jobamount) AS amount_sum
        FROM
            LiveMusic
        WHERE
            jobdate LIKE '2019%'
        UNION ALL
            SELECT
                SUM(jobamount) AS amount_sum
            FROM
                VO
            WHERE
                jobdate LIKE '2019%'
    ) t