如何创建此查询

时间:2010-12-17 17:57:05

标签: sql mysql aggregate-functions

如果我需要在select行和每个函数中包含两个聚合函数,如何创建一个查询我需要不同的group by和where条件 在我的例子中,我需要返回playerName,如果桌面游戏结果=第一次,以及他玩了多少次,可以检查玩家获胜的数量

但不知道如何处理两个聚合函数。

我想加入这两个查询的结果

1

select playeName,count(*)
from  player,game
where player.playerId=game.playerId and result="first"
group by game.playerId

2

select count(*)
from game, player
where game.playerId=player.playerId
group by game.playerId

桌面游戏的属性集是 playerId,结果 表播放器的属性集是 playerName,playerId

任何想法???

2 个答案:

答案 0 :(得分:3)

使用:

  SELECT p.playername,
         SUM(CASE WHEN g.result = 'first' THEN 1 ELSE 0 END),
         COUNT(*)
    FROM PLAYER p
    JOIN GAME g ON g.playerid = p.playerid
GROUP BY p.playername

答案 1 :(得分:0)

除了 OMG Ponies Bnjmn 提出的解决方案外,您还可以使用WITH ROLLUP

获得所需的结果
select result, count(*)
from game, player
where game.playerId=player.playerId
group by game.playerId, result WITH ROLLUP

然后,在客户端,查找结果等于'first'的记录,结果为null(即#games播放)。