2017-01-31 1 views
0

次の表を返すクエリがあります。私が作成した最後のコラムは、最後の列にPoints_Per_Gameという数字を得るために、をGames_playedで割ります。このクエリはなぜ私に不正な除算を与えていますか?

これはテーブルここ

+----------+--------------+--------+-----------------+ 
| PlayerID | Games_Played | Points | Points_Per_Game | 
+----------+--------------+--------+-----------------+ 
|  16 |   2 |  3 |   0.6000 | 
|  20 |   2 |  3 |   0.6000 | 
|  10 |   2 |  3 |   0.3750 | 
|  18 |   2 |  3 |   0.3750 | 
|  5 |   2 |  3 |   0.3750 | 
|  9 |   2 |  3 |   0.3750 | 
+----------+--------------+--------+-----------------+ 
6 rows in set (0.00 sec) 

では、クエリ

SELECT Players.PlayerID, COUNT(Games.Points) AS Games_Played, 
SUM(Games.Points) AS Points, SUM(Points/Games_Played) AS Points_Per_Game 
FROM Teams, Players, Games 

WHERE 
Teams.PlayerID=Players.PlayerID 
AND 
Games.Game=Teams.Game 
AND 
Games.Team=Teams.Team 
AND 
Games.GameDate=Teams.GameDate 
AND 
(
CONCAT(Games.Game, '_', Games.GameDate)= 
ANY(SELECT CONCAT(Teams.Game, '_', Teams.GameDate) 
FROM Teams WHERE PlayerID='4') 
AND NOT 
CONCAT(Games.Game, '_', Games.Team, '_', Games.GameDate)= 
ANY(SELECT CONCAT(Teams.Game, '_', Teams.Team, '_', Teams.GameDate) 
FROM Teams WHERE PlayerID='4') 

) 

GROUP BY Teams.PlayerID 
ORDER By Points_per_Game DESC, Points DESC, Games_Played; 

は私がすることによってグループ化し、参照されている列を加算していたという事実に何かありますか?

私はあなたのGames_Playedが正しいか、せいぜい誤解を招くませんでした....

SELECT Players.PlayerID, COUNT(Games.Game) AS Games_Played, 
SUM(Games.Points) AS Points, SUM(Games.Points)/COUNT(Games.Game) AS Points_Per_Game 
FROM Teams, Players, Games 

これは試してみてください1.5

+0

http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple- sql-query – Strawberry

+0

再生されたゲームは正しく表示されません – AntDC

+0

@Strawberry私は間違いなくボードに提案を取るでしょう。 – denski

答えて

1

として出ていない理由を知るように見えることはできません。

また、チーム、ゲーム&プレーヤーを接続するためにJOINSを使用することを検討することをおすすめします。

+0

あなたの前のコメントのこの@AntDCをありがとうGames_Playedは2つのゲームで正しいです。私は 'SUM(SUM(Games.Points)/ COUNT(Games.Game))'を試してみましたが、提案した方法を試してみることは考えていませんでした。 – denski

関連する問題