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

问题描述 投票:0回答:1
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
sql sqlite
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.