mysql - 如何区分两个求和查询

标签 mysql sql

我必须计算足球队的净胜球。 基本上是: (goalsScoredAtHome + goalsScoredAway) - (goalsConciededAtHome + goalsConciededAway) 一切都保存在一张表中:

homeTeam | awayTeam | goalsHome | goalsAway
  USA    |  Poland  |     2     |    0
 Poland  |   USA    |     3     |    1

这是我的 4 个独立查询:

(select sum(goalsHome) as GoalsScoredHome from game where home = 'USA' 
+
select sum(goalsAway) as GoalsScoredAway from game where away = 'USA')
-
(select sum(goalsAway) as GoalsConciededHome from game where home = 'USA'
+
select sum(goalsHome) as GoalsConciededAway from game where away = 'USA')

有什么方法可以在一次查询中完成吗?

最佳答案

您的查询的直接翻译使用条件聚合:

select (sum(case when home = 'USA' then goalsHome else 0 end) +
        sum(case when away = 'USA' then goalsAway else 0 end)
       ) -
       (sum(case when home = 'USA' then goalsAway else 0 end) +
        sum(case when away = 'USA' then goalsHome else 0 end)
       )
from game;

您可以将其简化为:

select (sum(case when home = 'USA' then goalsHome - goalsAway else 0 end) +
        sum(case when away = 'USA' then goalsAway - goalsHome else 0 end)
       )
from game;

关于mysql - 如何区分两个求和查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23243023/

相关文章:

sql - 查找多个已知 ID 项的替代 SQL 方法?

mysql - PDO异常 : SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

mysql - Froxlor mysql 1048 访问被拒绝

java - 获取 [SqlExceptionHelper] 不正确的字符串值 : '\xF0\x9F\x90\xBE V...' although the table is in UTF-8

mysql - 获取选定项和未选定项

sql - PLSQL - 字符串中所有字符的计数

C# MySQL Re-Usable 类安全问题

php - 无法使用 Slim Framework 从 PUT 请求获得响应

sql - C# SqlParameter - 提供 SQL (Microsoft SQL)

mySQL SELECT 使用 LEFT JOIN,返回值或 NULL WHERE 列在右表中指定