0

1 つの試合でバスケットボールの 3_point_attempts と 3_points_scored の数を記録するテーブルを作成しました。

私がやりたいのは、3_point_attempts*1.5 と 3_point_scored*3 の値を倍増することですが、そうすると、「単一グループのグループ関数ではありません」というエラーが表示されます。

このdbfiddleを確認してください

誰かが私がここで間違っていることを教えてもらえますか?

4

2 に答える 2

1

sum() over()結果を取得するために使用できます。

SELECT performanceid, 
  matchid, 
  teamid, 
  twopattempts, 
  (SUM(twopattempts) over(partition by teamid))*2  AS SumPoints
FROM Performance
WHERE TeamID = 1

SQL FiddlewithDemoを参照してください

3ポイントの試みを追加する場合は、次を使用できます。

SELECT performanceid, 
  matchid, 
  teamid, 
  twopattempts, 
  SUM(twopattempts) over(partition by teamid)*2  AS SumPoints,
  sum(THREEPATTEMPTS) over(partition by teamid)*1.5 as ThreePointAttempts,
  sum(THREEPSCORED) over(partition by teamid)*3 as ThreePointScored
FROM Performance
WHERE TeamID = 1

SQL FiddlewithDemoを参照してください

上記は、返された各行の合計値を示します。とに基づいてそれが必要matchidteamid場合は、次を使用できます。

SELECT MatchID,
  teamid, 
  SUM(twopattempts)*2  AS SumPoints,
  sum(THREEPATTEMPTS)*1.5 as ThreePointAttempts,
  sum(THREEPSCORED)*3 as ThreePointScored
FROM Performance
WHERE TeamID = 1
group by teamid, MatchID

SQL FiddlewithDemoを参照してください

于 2013-02-26T16:13:01.020 に答える
1

乗算を直接実行します。

SELECT performanceid, matchid, teamid, twopattempts, twopattempts*2 AS SumPoints,
        3_point_attempts*1.5, 3_point_scored*3 
FROM Performance
WHERE TeamID = 1

group by行を集約しようとしている場合にのみ必要です。例えば:

select teamid, sum(3_point_attempts*1.5), sum(3_point_scored*3_
from Performance
group by TeamID
于 2013-02-26T16:08:25.000 に答える