如何在SUM上添加WHERE子句? (按GROUP BY SELECT选择JOIN SUM ORDER)

时间:2018-02-28 21:48:59

标签: sql sqlite

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

1 个答案:

答案 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