Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在mySQL中求多个相同表的和_Mysql_Count_Sum - Fatal编程技术网

在mySQL中求多个相同表的和

在mySQL中求多个相同表的和,mysql,count,sum,Mysql,Count,Sum,我有4张相同的桌子(每个季度一张)。我已设法按开始终端计算每个季度的每个开始终端和组。然而,我想将所有四个季度(表)相加,以得到计数的总和 SELECT StartTerminal, COUNT(*) FROM test.2013_q1 GROUP BY StartTerminal; 以下是我尝试执行但失败的脚本: SELECT StartTerminal, COUNT(*) as TotalCount FROM ( SELECT StartTerminal FROM tes

我有4张相同的桌子(每个季度一张)。我已设法按开始终端计算每个季度的每个开始终端和组。然而,我想将所有四个季度(表)相加,以得到计数的总和

SELECT StartTerminal, COUNT(*)
FROM test.2013_q1
GROUP BY StartTerminal;

以下是我尝试执行但失败的脚本:

SELECT StartTerminal, COUNT(*) as TotalCount
FROM (
    SELECT StartTerminal
    FROM test.2013_q1
    GROUP BY StartTerminal
    UNION ALL
        SELECT StartTerminal
        FROM test.2013_q2
        GROUP BY StartTerminal
    )
    GROUP BY StartTerminal;

谢谢

我认为错误可能是您没有为子查询指定名称。请试试这个-

SELECT StartTerminal, SUM(count) as TotalCount
FROM (
SELECT StartTerminal, COUNT(*) as count
FROM test.2013_q1
GROUP BY StartTerminal
UNION ALL
SELECT StartTerminal, COUNT(*) as count
FROM test.2013_q2
GROUP BY StartTerminal
) all_year_data
GROUP BY StartTerminal;

我认为错误可能是您没有为子查询指定名称。请试试这个-

SELECT StartTerminal, SUM(count) as TotalCount
FROM (
SELECT StartTerminal, COUNT(*) as count
FROM test.2013_q1
GROUP BY StartTerminal
UNION ALL
SELECT StartTerminal, COUNT(*) as count
FROM test.2013_q2
GROUP BY StartTerminal
) all_year_data
GROUP BY StartTerminal;
您需要对计数的值使用
SUM()
,而不是对已经分组的值使用
COUNT()

SELECT StartTerminal, SUM(cnt) as TotalCount FROM 
    (SELECT StartTerminal, COUNT(*) AS cnt FROM test.2013_q1 GROUP BY StartTerminal
UNION ALL
    SELECT StartTerminal, COUNT(*) AS cnt FROM test.2013_q2 GROUP BY StartTerminal) AS counted
GROUP BY StartTerminal
您需要对计数的值使用
SUM()
,而不是对已经分组的值使用
COUNT()

SELECT StartTerminal, SUM(cnt) as TotalCount FROM 
    (SELECT StartTerminal, COUNT(*) AS cnt FROM test.2013_q1 GROUP BY StartTerminal
UNION ALL
    SELECT StartTerminal, COUNT(*) AS cnt FROM test.2013_q2 GROUP BY StartTerminal) AS counted
GROUP BY StartTerminal

有两种可能的方法可以使查询正常工作: 首先,您可以计算每个表中的条目,然后汇总结果:

SELECT StartTerminal, SUM(q_count) FROM
(
SELECT StartTerminal, COUNT(*) AS q_count FROM test.2013_q1 GROUP BY StartTerminal
UNION ALL
SELECT StartTerminal, COUNT(*) AS q_count FROM test.2013_q2 GROUP BY StartTerminal
UNION ALL
SELECT StartTerminal, COUNT(*) AS q_count FROM test.2013_q3 GROUP BY StartTerminal
UNION ALL
SELECT StartTerminal, COUNT(*) AS q_count FROM test.2013_q4 GROUP BY StartTerminal
) as foo
GROUP BY StartTerminal
或者,您可以从所有表中选择所有条目(不在子查询中分组!),然后计数:

SELECT StartTerminal, COUNT(*) as TotalCount
FROM (
SELECT StartTerminal FROM test.2013_q1
UNION ALL
SELECT StartTerminal FROM test.2013_q2
UNION ALL
SELECT StartTerminal FROM test.2013_q3
UNION ALL
SELECT StartTerminal FROM test.2013_q4
) as foo
GROUP BY StartTerminal;

有两种可能的方法可以使查询正常工作: 首先,您可以计算每个表中的条目,然后汇总结果:

SELECT StartTerminal, SUM(q_count) FROM
(
SELECT StartTerminal, COUNT(*) AS q_count FROM test.2013_q1 GROUP BY StartTerminal
UNION ALL
SELECT StartTerminal, COUNT(*) AS q_count FROM test.2013_q2 GROUP BY StartTerminal
UNION ALL
SELECT StartTerminal, COUNT(*) AS q_count FROM test.2013_q3 GROUP BY StartTerminal
UNION ALL
SELECT StartTerminal, COUNT(*) AS q_count FROM test.2013_q4 GROUP BY StartTerminal
) as foo
GROUP BY StartTerminal
或者,您可以从所有表中选择所有条目(不在子查询中分组!),然后计数:

SELECT StartTerminal, COUNT(*) as TotalCount
FROM (
SELECT StartTerminal FROM test.2013_q1
UNION ALL
SELECT StartTerminal FROM test.2013_q2
UNION ALL
SELECT StartTerminal FROM test.2013_q3
UNION ALL
SELECT StartTerminal FROM test.2013_q4
) as foo
GROUP BY StartTerminal;

再见,谢谢。结果是总数中的“1”和“2”。你得到你的答案了吗?不,我没有。它没有把总数加起来。它只给了我1和2(我假设1意味着它在其中一个表中找到,如果它在这两个表中都找到,则为2),在再次阅读您的要求后,我已经更正了我的代码。请重试,如果您仍然面临任何问题,请告诉我。嗨@Ankit,我现在有另一个问题。你能帮忙吗?谢谢。结果是总数中的“1”和“2”。你得到你的答案了吗?不,我没有。它没有把总数加起来。它只给了我1和2(我假设1意味着它在其中一个表中找到,如果它在这两个表中都找到,则为2),在再次阅读您的要求后,我已经更正了我的代码。请重试,如果您仍然面临任何问题,请告诉我。嗨@Ankit,我现在有另一个问题。你能帮忙吗?嗨,对不起,这也不行。我得到的错误代码是1248:每个派生表都必须有自己的别名—只是为表添加了别名。请再试一次。不幸的是,我现在得到:“错误代码1064。您的SQL语法有错误”我相信这是在线的4@JackMorgan对不起,我应该给统一表一个别名。现在已更正。嗨,对不起,这也不起作用。我得到的错误代码是1248:每个派生表都必须有自己的别名—只是为表添加了别名。请再试一次。不幸的是,我现在得到:“错误代码1064。您的SQL语法有错误”我相信这是在线的4@JackMorgan对不起,我应该给统一表一个别名。现在更正了。