我在mysql中有一个表
==================================================
ID | TEAM_ID | PTS | COMPETITION
==================================================
1 | 1 | 10 | zc
--------------------------------------------------
2 | 1 | 15 | po
--------------------------------------------------
3 | 1 | 5 | sp
我正在尝试找出正确的查询以获取 PTS 列 SUM 的结果,其中列 team id 等于 1。这就是我得到的
SELECT SUM(pts) FROM
(SELECT SUM(pts) FROM `stats_2016/2017` WHERE `team_id`='1' AND `competition`='zc'
UNION ALL
SELECT SUM(pts) FROM `stats_2016/2017` WHERE `team_id`='1' AND `competition`='po'
UNION ALL
SELECT SUM(pts) FROM `stats_2016/2017` WHERE `team_id`='1' AND `competition`='sp'
)
我想得到的结果是 30 (10+15+5)...
最佳答案
三个变化:
- 为内联 View (派生表)分配别名
- 为内联 View 的第一个 SELECT 中的表达式指定一个别名。 (该别名将用于派生表中的列名。(
- 在外部查询中,通过分配的别名引用内联 View 中的列。
SELECT SUM(v.totpts) AS totpts
-- 3.-- ^^^^^^
FROM ( SELECT SUM(pts) AS totpts FROM `stats_2016/2017` ...
-- 2.-- ^^ ^^^^^^
UNION ALL
SELECT SUM(pts) FROM `stats_2016/2017` ...
) v
-- 1.-- ^
关于php - 合并所有 3 个 SUM 查询以从同一表和同一列但使用不同的子句获取总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45285431/