【问题标题】:How to apply a single query that sum column for individual values如何应用单个查询为单个值求和列
【发布时间】:2015-11-19 01:38:27
【问题描述】:

我有 2 个表名为 userstatistics

user 表有 3 列:idnamecategory

statistics 表有 3 列:ididUser(关系)、cal

类似这样的:

用户

 Id name  category
 1  name1 1
 2  name2 2
 3  name3 3

统计数据

Id idUser cal
1  1      1
2  1      1
3  1      1
4  2      1
5  2      1

我如何应用一个查询来对每个用户类别的 cal 列求和,并给我这样的东西:

category totalcal
1        3
2        2 
3        0

【问题讨论】:

    标签: sql


    【解决方案1】:

    您想通过left join 保留所有类别。剩下的只是聚合:

    select u.category, coalesce(sum(s.cal), 0) as cal
    from users u left join
         statistics s
         on u.id = s.idUser
    group by u.category;
    

    【讨论】:

      【解决方案2】:

      使用LEFT JOIN 得到0category=3

      SELECT
          user.category
          ,SUM(statistics.cal) AS totalcal
      FROM
          user
          LEFT JOIN statistics ON statistics.idUser = user.Id
      GROUP BY
          user.category
      

      这里SUM 将返回NULLcategory=3。要获取0 而不是NULL,您可以使用COALESCE(SUM(statistics.cal), 0)

      【讨论】:

        猜你喜欢
        • 2019-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-25
        • 2014-11-24
        • 2011-02-11
        相关资源
        最近更新 更多