SQL语句不使用多个WHERE子句计算SUM

时间:2017-01-20 11:53:10

标签: mysql

我试图根据与两列中每一列相关联的位置返回两列的总和。 当我使用OR语句时:

@PreUpdate

它只返回我数据库中的所有内容。我想要的是基于我列出的每个城市的列的总和。

我不确定我做错了什么

提前致谢!

1 个答案:

答案 0 :(得分:1)

您只想在city中添加group by,而不是要汇总的列。请记住,group by中的列定义了要返回的行,每行都有唯一的组合。

另外,使用in。 。 。更容易写和读:

SELECT ua.City, SUM(ec.ElecEnergy) AS ecTotal, SUM(ec.GasEnergy) AS gcTotal
FROM energyconsumption ec INNER JOIN
     useraccount ua
     ON ec.User = ua.id
WHERE ua.City IN ('London', 'Manchester', 'Luton', 'Newcastle', 'Birmingham', 'Blackburn')
GROUP BY ua.City
ORDER BY ua.City ASC;

请注意,我还更改了ORDER BY子句 - 假设您每个城市都返回一行。

如果您想要合并所有城市的总数,那么:

  • 删除GROUP BYORDER BY条款。
  • ua.city移除SELECT