2014-09-29 131 views
1
SELECT 
    PlayerName, ROUND(SUM(A)/SUM(TO),2) AS ATORatio 
FROM 
    Players_t 
INNER JOIN 
    GameStats_t ON Players_t.JerseyNumber=GameStats_t.JerseyNumber 
WHERE 
    ATORatio < (SELECT SUM(A)/SUM(TO) FROM GameStats_t) 
GROUP BY 
    PlayerName; 

我需要返回所有比ATORatio小于平均值的玩家。为什么这个代码不工作?查找小于平均值的计算比率(SQL)

+1

使用having子句 – 2014-09-29 04:33:19

+0

当我这样做,MS Access就会要求我输入ATORatio参数值(我简直复制并粘贴组通过下面的WHERE行并将其变更为 – 2014-09-29 04:35:01

回答

1

下面应该有所帮助:

SELECT 
    PlayerName, ROUND(SUM(A)/SUM(TO),2) AS ATORatio 
FROM 
    Players_t 
INNER JOIN 
    GameStats_t ON Players_t.JerseyNumber=GameStats_t.JerseyNumber 
GROUP BY 
    PlayerName; 
HAVING    ----> You can also use WHERE here 
    ROUND(SUM(A)/SUM(TO),2) < (SELECT SUM(A)/SUM(TO) FROM GameStats_t) 

的问题是,ATORatio会在执行WHERE或HAVING子句不最初称为。因此,您需要在where或having子句中使用字段ATORatio的值。

+0

非常感谢!!!! – 2014-09-29 04:36:59

+1

@WilliamSmolen:如果它对你有帮助,当你有足够的声望时,请接受作为答复和upvote!:) – 2014-09-29 04:38:32