我的问题是:我有一个 MS SQL 查询,它结合了不同用户的游戏和游戏得分,并在两部分计算中使用聚合函数来获得组合得分。出于某种原因,计算的一部分(计算的第一部分 - 玩过的游戏)没有用于总分(我称之为 Algoscore)。查询如下:
SELECT TOP 10
COUNT(TourScore.TourScoreID) AS GameCount,
AVG(GameScore.GameScore) AS AVGScore,
Users.UserID, Users.DisplayName,
(((COUNT(TourScore.TourScoreID) / 750) * .50) * 100)
+ (((AVG(GameScore.GameScore) / 14695) * .50) * 100) AS Algoscore
FROM TourScore INNER JOIN GameScore
ON TourScore.GameScoreID = GameScore.GameScoreID
INNER JOIN Users
ON GameScore.UserID = Users.UserID
WHERE (GameScore.ScoreDate BETWEEN '01/01/2013' AND '06/01/2013')
GROUP BY Users.UserID, Users.DisplayName
ORDER BY Algoscore DESC
SELECT: 的计算部分
(((COUNT(TourScore.TourScoreID) / 750) * .50) * 100) + (((AVG(GameScore.GameScore) / 14695) * .50) * 100) AS Algoscore
基本上是忽略了计算的第一部分:(((COUNT(TourScore.TourScoreID) / 750) * .50) * 100)
第二部分计算得很好,所以当我运行查询时,这Algoscore
只是等式的第二部分,而不是等式的第一和第二部分应有的组合。
我希望这是有道理的。对此有何建议?我什至可以使用带有聚合函数的方程执行这样的查询来获得另一个值吗?