sql count其中result大于某个数字

时间:2016-02-01 13:25:40

标签: mysql sql count

以下查询将总结每场比赛的目标:

SELECT
  SUM(Goals)
FROM `Team Match Table`
WHERE Match_Id IN (SELECT ID FROM Match Table
  WHERE HomeTeam_ID = (SELECT ID FROM `Team Table` WHERE `Team Name` = 'Aberdeen')
  OR AwayTeam_ID = (SELECT ID FROM `Team Table` WHERE `Team Name` = 'Aberdeen'))
GROUP by Match_Id

是否可以计算出有多少结果大于某个数字?

3 个答案:

答案 0 :(得分:0)

在条件上使用SUM()为您提供计数:

SELECT
    SUM(Goals) total_goals,
    SUM(Goals > 5) over_5_goals_count
FROM `Team Match Table`
WHERE Match_Id IN (SELECT ID FROM Match Table
  WHERE HomeTeam_ID = (SELECT ID FROM `Team Table` WHERE `Team Name` = 'Aberdeen')
  OR AwayTeam_ID = (SELECT ID FROM `Team Table` WHERE `Team Name` = 'Aberdeen'))
GROUP by Match_Id

这有效(仅限mysql),因为mysql将true视为1而将false视为0,因此对条件的结果求和可以得到这是真实的次数。

我选择了> 5作为条件。您可以使用任何您想要的阈值。

答案 1 :(得分:0)

表名'团队匹配表是否正确'?由于sql不允许您创建带空格的表名。

以完美的格式查询。

从team_match_table中选择sum(目标),其中match_is in(从匹配表中选择id,其中hometeam_id in(从team_table中选择id,其中team_name ='Aberdeen'or awayteam_id in(从team_table中选择id,其中team_name ='Aberdeen'))) ;

您可以使用表格中的特定值来获得完美的结果,而不是给出条件。

只需列出您拥有的表格,以及其常用列

答案 2 :(得分:0)

尝试;

SELECT Match_id, SUM(`Goals`)
FROM `Team Match Table`
WHERE `Match_Id` IN (SELECT `ID` FROM `Match Table`
                 WHERE `HomeTeam_ID` = (SELECT `ID` FROM `Team Table`
                                        WHERE `Team Name` = 'Aberdeen')
                    OR `AwayTeam_ID` = (SELECT `ID` FROM `Team Table`
                                        WHERE `Team Name` = 'Aberdeen'))
GROUP by `Match_Id`
HAVING SUM('Goals') >= DesiredNumber --Change DesiredNumber to a numeric value you wish to filter by

我已将Match_id放在返回的列中,以便您可以判断哪些匹配项具有您想要返回的目标数。它还会告诉你该比赛中的进球数