通过单次数据库访问访问不同表的两个 SELECT SUM() 查询的结果求和

问题描述 投票:0回答:4

如何组合这两个 SQL 语句来创建一个查询,将两个总和相加并返回一个总计。

SELECT SUM(hits01 + hits02 + hits03 + hits04 + hits05 + hits06 + hits07 + hits08 + hits09) AS 'AEROwiz'
FROM tbl_2011
WHERE appName='AEROwiz'

SELECT SUM(hits10 + hits11 + hits12) AS 'AEROwiz'
FROM tbl_2010
WHERE appName='AEROwiz'

两个表中都存在hits10、hits11和hits12。

sql sum
4个回答
7
投票

使用 UNION 查询 - 只需在两个查询之间填充“UNION”即可:

SELECT SUM(...) AS AEROWiz
FROM ...

UNION

SELECT SUM(...) AS AEROWiz
FROM ...

更新

将联合包装在另一个查询中:

SELECT SUM(AEROWiz)
FROM (
    .... unioned queries here
) AS child

4
投票
SELECT  SUM(hits01 + hits02 + hits03 + hits04 + hits05 + hits06 +  
hits07 + hits08 + hits09) AS 'AEROwiz' 
FROM    tbl_2011 
WHERE   appName='AEROwiz' 

UNION ALL

SELECT  SUM(hits10 + hits11 + hits12) AS 'AEROwiz' 
FROM    tbl_2010 
WHERE   appName='AEROwiz' 

使用

UNION ALL
,因为它允许重复,并且
UNION
不会在查询结果中放入重复项。对于
SUM()
聚合,我猜测很有可能出现重复求和,所以我会选择
UNION ALL
来进行此操作。


2
投票

您可以使用两个子选择:

SELECT
(
    SELECT SUM(hits01 + hits02 + hits03 + hits04 + hits05 + hits06 + hits07 + hits08 + hits09)
    FROM tbl_2011
    WHERE appName='AEROwiz'
) T1
+
(
    SELECT SUM(hits10 + hits11 + hits12)
    FROM tbl_2010
    WHERE appName='AEROwiz'
) T2
AS AEROwiz

您可能还需要考虑标准化您的数据库,这样您就不会每年都有一个表。


0
投票
SELECT  SUM(hits01 + hits02 + hits03 + hits04 + hits05 + hits06 + 
hits07 + hits08 + hits09 + t2010.hits10 + t2010.hits11 + t2010.hits12) AS 'AEROwiz'
FROM tbl_2010 t2010
JOIN tbl_2011 t2011 ON t2010.appName = t2011.appName
WHERE t2010.appName='AEROwiz'
© www.soinside.com 2019 - 2024. All rights reserved.