php - 合并所有 3 个 SUM 查询以从同一表和同一列但使用不同的子句获取总和

标签 php mysql sum union

我在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)...

最佳答案

三个变化:

  1. 为内联 View (派生表)分配别名
  2. 为内联 View 的第一个 SELECT 中的表达式指定一个别名。 (该别名将用于派生表中的列名。(
  3. 在外部查询中,通过分配的别名引用内联 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/

相关文章:

javascript - onchange 下拉列表的问题

mysql - 按日期 ASC 排序,但组内按 DESC 排序

java - 从java代码导入mysql数据库

mysql - COLDFUSION - 查找表中的行总和

python - 求和二维的最简单方法? (Python)

php memory_limit 问题

php - 在提交前设置 PHP 值

mysql - 获取每个 "group"的前 5 条记录

php - Symfony 以数组格式设置请求参数

mysql - 如何根据mysql中的值获取平均值