mysql - 对于存在多个 WHERE 的多个 COLUMNS 的 SUM,MySQL 语法是否正确?

标签 mysql

我有以下数据库表:

+----------------+-------------+-----+----- +--------+----------------+ |领域 |类型 |空 |关键|默认 |额外 | +----------------+-------------+------+-----+----- ----+----------------+ |结果_id |整数(11)|否 |优先原则 |空 |自动增量 | |社区 ID |整数(11)|否 | |空 | | |玩家1_id |整数(11)|否 | |空 | | |玩家1_姓名 | varchar(50) | varchar(50)否 | |空 | | |玩家1_团队| varchar(50) | varchar(50)否 | |空 | | |玩家1_目标 |整数(11)|否 | |空 | | |玩家1_结果 | varchar(3) | varchar(3) |否 | |空 | | |玩家2_目标|整数(11)|否 | |空 | | |玩家2_结果| varchar(3) | varchar(3) |否 | |空 | | |玩家2_id |整数(11)|否 | |空 | | |玩家2_名称 | varchar(50) | varchar(50)否 | |空 | | |玩家2_团队| varchar(50) | varchar(50)否 | |空 | | |玩家 1_pts |整数(11)|否 | |空 | | |玩家2_pts |整数(11)|否 | |空 | | |日期 |日期 |否 | |空 | | +----------------+-------------+------+-----+----- ----+----------------+

我想运行一个 MySQL 查询来告诉我哪个球员进球最多。

该玩家可以是玩家 1 或玩家 2。

我想象它是这样的:

select member, goals, count(*) Total
from 
(
select player2_name as member, player1_goals as goals
from results
WHERE player1_id = 2
union all
select player1_name as member, player2_goals as goals
from results
WHERE player2_id = 2 

) AS T

group by goals
order by Total desc
Limit 1

这给出了结果:

member        | goals | Total
Jamie Charles | 2     | 11
Jamie Charles | 0     |  8
Jamie Charles | 3     |  5
Jamie Charles | 1     |  4
Jamie Charles | 5     |  1

但它看起来像是在说已经发生了多少个进球。所以正确的结果是(2x11)+(3*5)+(1*4)+(5*1)

此查询的正确语法是什么?

最佳答案

您需要按成员分组,使用sum聚合函数获得所有目标的总和。您不需要订单

select member, sum(goals), count(*) Total_goal_records
from 
(
select player2_name as member, player1_goals as goals
from results
WHERE player1_id = 2
union all
select player1_name as member, player2_goals as goals
from results
WHERE player2_id = 2 

) AS T

group by member 
order by Total desc;

关于mysql - 对于存在多个 WHERE 的多个 COLUMNS 的 SUM,MySQL 语法是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40615977/

相关文章:

c# - MySQL 连接时间太长?

MySql 查询 - 插入 A select * from B (当 B 仍然填充时)

mysql - 带有左连接的 group_concat 太慢了

php - 连接三个表

mysql - 我怎样才能得到所有远离我的值(value)的特定日期的结果?

mysql - SQL 在一个查询中生成 2 种不同的日期类型

php - 查询生成器并使用 laravel 从一个表中查找另一个表中不存在的记录

mysql - 从 3 个表中选择具有不同列的 Common Record

php - 多对多 vs 一行

PHP array_push() 因来自 SQL 的文本而失败