mysql - 按两列分组

标签 mysql sql group-by

数据库表包含目标操作。

 type      goal      assist
 goal      Johnny    James
 goal      Johnny    James
 goal      James     Bob

使用GROUP BY goal, Assist时显示

 player    goals     assists
 Johnny    2         0
 Johnny    0         0
 James     1         0
 James     0         2
 Bob       0         0
 Bob       0         1

但我需要它在一行中显示球员的进球和助攻。干杯。

最佳答案

您可以这样做(尽管这可能不是最快的查询,具体取决于数据库和索引的大小!):

SELECT players.player,
      -- Use correlated subselects to count goals / assists
      (SELECT COUNT(*) FROM actions WHERE goal = players.player) goals
      (SELECT COUNT(*) FROM actions WHERE assist = players.player) assists

-- Get all distinct players (UNION = DISTINCT, here). Of course, if you
-- have an actual players table, use that one instead!
FROM (
  SELECT goal player FROM actions UNION
  SELECT assist      FROM actions
) players

根据您的问题,我不确定 type = goal 是否与您的查询相关...

关于mysql - 按两列分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10055004/

相关文章:

ios - 统计ios app中的分享总数

mysql - SQL - 根据 YTD 数字计算出 MTD 数字

mysql - 从许多行中选择值或基于列的另一个值

mysql - 数据库建模故障排除

一个查询中的 MySQL 一对多关系

sql - Access SQL SELECT 查询 : Required to use the table alias in WHERE clause?

mysql - 在没有主键的情况下检索每个组中的最后一条记录

linq - EFCore 2.2 GroupBy Sum 和 DateDiff

php - 单击按钮后显示最近的数据(不同页面)

sql - 删除除一条重复记录以外的所有记录