【问题标题】:How to sum the data from two tables sql如何对两个表sql的数据求和
【发布时间】:2020-11-24 23:59:59
【问题描述】:

我有 2 个表的结果集

表1


      Mediaid  FilteredDocsCount FileSize
        2000     5                  20
        3000     2                  25

表2


        Mediaid   FilteredDocsCount  FileSize
         2000        3                  50
         2001        4                  20
         2005        2                  23
         3000        3                  22

我的目标是从这些表中添加过滤后的DocsCount 和文件大小。我期待以下结果:

    Mediaid   FilteredDocsCount  Filesize
     2000        8                  70
     2001        4                  20
     2005        2                  23
     3000        5                  47

【问题讨论】:

    标签: sql tsql join case


    【解决方案1】:

    这看起来像一个外部连接:

    select t2.mediaid, t2.FilteredDocsCount + coalesce(t1.FilteredDocsCount, 0),
           t2.filesize + coalesce(t1.filesize, 0)
    from table2 t2 left join
         table1 t1
         on t2.mediaid = t1.mediaid
    

    【讨论】:

    • 对正确答案投反对票只会让网站看起来很糟糕。
    • 上述查询返回了更多在两个表中重复的媒体计数。
    • @ppokh 。 . .示例数据没有在表中重复的媒体 ID 示例。没有理由认为这是基于问题的问题。
    【解决方案2】:

    按 mediaid 分组的简单联合应该可以解决问题

    select mediaid, sum(FilteredDocsCount ), sum(filesize)
    from 
    (select *
    from table1 tb1
    union all 
    select *
    from table2) sub
    group by mediaid
    

    查看它在this Fiddle. 中的工作原理

    【讨论】:

      猜你喜欢
      • 2014-06-23
      • 1970-01-01
      • 2020-01-29
      • 1970-01-01
      • 2021-03-03
      • 2018-04-30
      • 1970-01-01
      • 1970-01-01
      • 2013-01-30
      相关资源
      最近更新 更多