0

次の行を持つ「myPlayerInfo」という名前のテーブルがあるとします。

'player name' 'number of goals'
'john'        '10'
'martin'      '20'
'jen'         '20'

Q1。「目標数」列の合計である新しい列を出力するSQLクエリを作成するにはどうすればよいですか?

'player name' 'number of goals'  'Total goals by all players'
'john'        '10'               '50'
'martin'      '20'               '50'
'jen'         '20'               '50'

Q2。Q1で行った合計目標列で各プレーヤーが獲得した目標の%である新しい列を出力するSQLクエリを作成するにはどうすればよいですか。?

'player name' 'number of goals' '% goals scored'  'Total goals by all players'
'john'        '10'              '20'                  '50'
'martin'      '20'              '40'                  '50'
'jen'         '20'              '40'                  '50'
4

3 に答える 3

6

ウィンドウ関数を使用する必要があります。

select
    player_name,
    number_of_goals,
    (number_of_goals * 100) / SUM(number_of_goals) OVER () AS percent_goals_scored,
    SUM([number of goals]) OVER () AS total_goals_by_all_players
from myPlayerInfo
于 2012-07-22T06:48:00.657 に答える
3

副選択から派生したすべての行の合計のデカルト結合を実行できます。

SELECT 
    a.player_name, 
    a.number_of_goals, 
    (a.number_of_goals / b.goalsum)*100 AS percent_scored,
    b.goalsum
FROM   
    myPlayerInfo a
CROSS JOIN 
    (SELECT SUM(number_of_goals) AS goalsum FROM myPlayerInfo) b
于 2012-07-22T06:50:12.513 に答える
0

みたいなSELECT name, goals, sum(goals) as sum, goals/sum(goals) as relgoals FROM table;

于 2012-07-22T06:47:18.777 に答える