SELECT player.name,player.handicap,
SUM(tournament_player.points) as total_points,
COUNT(tournament_player.player_id) as attendances
FROM player
INNER JOIN tournament_player ON player.id=tournament_player.player_id
GROUP BY player.id
ORDER BY SUM(tournament_player.points) DESC
以上效果很好,但它也选择了没有积分的玩家。即它们的总点数等于0
如何添加类似
的WHERE子句WHERE SUM(tournament_player.points) > 0
无论我把这个子句放在哪里,它总是在WHERE子句附近给我一个错误:(
SELECT player.name,player.handicap,
SUM(tournament_player.points) as total_points,
COUNT(tournament_player.player_id) as attendances
FROM player
INNER JOIN tournament_player ON player.id=tournament_player.player_id
GROUP BY player.id
WHERE SUM(tournament_player.points) > 0
ORDER BY SUM(tournament_player.points) DESC
- 更新 -
谢谢你们俩!不知道HAVING条款。工作声明:
SELECT player.name,player.handicap,
SUM(tournament_player.points) as total_points,
COUNT(tournament_player.player_id) as attendances
FROM player
INNER JOIN tournament_player ON player.id=tournament_player.player_id
GROUP BY player.id
HAVING SUM(tournament_player.points) > 0
ORDER BY SUM(tournament_player.points) DESC
答案 0 :(得分:2)
使用聚合列时,您需要使用HAVING
。
SELECT player.name,player.handicap,
SUM(tournament_player.points) as total_points,
COUNT(tournament_player.player_id) as attendances
FROM player
INNER JOIN tournament_player ON player.id=tournament_player.player_id
GROUP BY player.id
HAVING SUM(tournament_player.points) > 0
ORDER BY SUM(tournament_player.points) DESC