如果我需要在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
任何想法???
答案 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播放)。