从表中获取计数并显示每列的总和

时间:2012-07-26 03:19:47

标签: sql join

这低于表2中的数据

ID2        |    Count2
-----------+-----------
1345653         5
534140349       5
682527813       4
687612723       3
704318001       5

这是我在表1中的以下数据

ID1        |    Count1
-----------+-----------
1345653         4
704318001       4
  1. 如果您看到上表,则表2中的1345653具有5 count,但在表1中,它具有4 count,同样,表2中的ID 704318001具有{{} 1}}但在表1中它有5 count
  2. 还有一件事我需要展示,我不知道是否可以这样做。我想在最后显示每列的总和,比如最后的Count2列的总和和最后的Count1列的总和。
  3. 所以我需要在输出中显示这样的内容。我有第一部分的工作查询,但我不确定如何处理第二部分。

    4 count

    这可能在sql中吗?如果是,我该如何实现?

    我创建了SQL fiddle,其中只有count事件正在工作(意味着第一部分),而且我不确定如何在该SQL查询中添加每个列功能的总和。

3 个答案:

答案 0 :(得分:1)

它会对你有用吗?

select id2,  SUM(count2),SUM(coalesce(count1, 0)) as count1 
from table2 
 left outer join table1 
  on id1=id2
 group by id2
 with rollup

这是mysql语法,但大多数RDMS支持ROLLUP语法上的差异很小

答案 1 :(得分:0)

在标准的sql中:

Select id, Count2,Count1, Count2+Count1 as CountSum
from table2 
left outer join table1 on table1.id=table2.id

答案 2 :(得分:0)

您正在寻找“汇总”分组。我相信以下查询应该提供您想要的。假设你正在使用SQL Server ......

SELECT
    ISNULL(Table1.ID1, Table2.ID2) AS ID,
    SUM(ISNULL(Table2.Count2, 0)) AS Count2,
    SUM(ISNULL(Table1.Count1, 0)) AS Count1
FROM Table1
FULL JOIN Table2 ON Table2.ID2 = Table1.ID1
GROUP BY
    ISNULL(Table1.ID1, Table2.ID2) WITH ROLLUP