未经测试。
SELECT CLUB.id
,CLUB.name
,COUNT(TEAM.id) AS "#TEAMS"
,SUM( case TEAM.PAID_UP
when true then 1
else 0
end case) AS "#PAID UP TEAMS"
,"#TEAMS" / "#PAID UP TEAMS" * 100 AS "%PAIDUP"
FROM CLUB
INNER JOIN TEAM
ON CLUB.ID = TEAM.CLUB_ID
GROUP BY CLUB.ID
如果错了,我就删掉。
编辑
根据对此答案的注释,您可以简单地重复列表达式。
SELECT CLUB.id
,CLUB.name
,COUNT(TEAM.id) AS "#TEAMS"
,SUM( case TEAM.PAID_UP
when true then 1
else 0
end case) AS "#PAID UP TEAMS"
,COUNT(TEAM.id) / SUM( case TEAM.PAID_UP
when true then 1
else 0
end case) * 100 AS "%PAIDUP"
FROM CLUB
INNER JOIN TEAM
ON CLUB.ID = TEAM.CLUB_ID
GROUP BY CLUB.ID