2015-02-07 83 views
0

這是我的選擇查詢減去在MySQL列

Select 
    snpc_stats.gamedetail.Player, 
    Sum(snpc_stats.gamedetail.Points + snpc_stats.gamedetail.Hits) As TotalPoints, 
    COUNT(*) As 'Games Played', 
    Sum(If(snpc_stats.gamedetail.Finish = 1, 1, 0)) As Wins, 
    Sum(If(snpc_stats.gamedetail.Finish = 2, 1, 0)) As Second, 
    Sum(If(snpc_stats.gamedetail.Finish = 3, 1, 0)) As Third, 
    Round(Avg(snpc_stats.gamedetail.Finish),2) As 'Average Finish', 
    Sum(snpc_stats.gamedetail.Hits) As `Total Hits`, 
    Sum(snpc_stats.gamedetail.ChampFund) As ChampFund, 
    Sum(snpc_stats.games.BuyIn) + (snpc_stats.gamedetail.ChampFund) As Cost, 
    Sum(snpc_stats.gamedetail.Winnings) As Winnings, 
    Sum(snpc_stats.gamedetail.Winnings) - (snpc_stats.games.BuyIn) - (snpc_stats.gamedetail.ChampFund) As 'Total Winnings', 
    COUNT(snpc_stats.games.Round) As round 

From 
    snpc_stats.gamedetail Inner Join 
    snpc_stats.games On snpc_stats.games.GameID = 
    snpc_stats.gamedetail.GamesID 

Where 
    snpc_stats.games.Season = '2015 Season' 

Group By 
    snpc_stats.gamedetail.Player, snpc_stats.games.Season 

Order By 
    TotalPoints Desc 

的TotalPoints列後,我想補充一點顯示每個玩家的小徑背後的點量一列所有從第一行的值的行領導者,如下表:

Rank | Player | Total Points | Points Behind 
1  Bill  164   - 
2  Al  152   -12 
3  Ed  151   -13 
4  Jill  123   -41 
5  Bob  121   -43 
6  Joe  102   -62 
7  Dave  82   -82 
8  Rob   60   -104 
9  Doug  60   -104 
10  Don   51   -113 
11  Dan   30   -134 

任何幫助將不勝感激!

回答

1

溶液(1)
如果您正在使用連接到數據庫並運行查詢,你可以在某些變量保持第一行的總分值的服務器端語言,並從它
減去以下所有行
溶液(2)
使一個子查詢,返回第一行的總積分,並在查詢

Select 
 
    snpc_stats.gamedetail.Player, 
 
    Sum(snpc_stats.gamedetail.Points + snpc_stats.gamedetail.Hits) As TotalPoints, 
 
    (Sum(snpc_stats.gamedetail.Points + snpc_stats.gamedetail.Hits) - (Select Sum(snpc_stats.gamedetail.Points + snpc_stats.gamedetail.Hits) From snpc_stats.gamedetail Inner Join snpc_stats.games On snpc_stats.games.GameID = snpc_stats.gamedetail.GamesID Where snpc_stats.games.Season = '2015 Season' Group By snpc_stats.gamedetail.Player, snpc_stats.games.Seaso Order By Sum(snpc_stats.gamedetail.Points + snpc_stats.gamedetail.Hits) Desc Limit 1)) As Points Behind, 
 
    COUNT(*) As 'Games Played', 
 
    Sum(If(snpc_stats.gamedetail.Finish = 1, 1, 0)) As Wins, 
 
    Sum(If(snpc_stats.gamedetail.Finish = 2, 1, 0)) As Second, 
 
    Sum(If(snpc_stats.gamedetail.Finish = 3, 1, 0)) As Third, 
 
    Round(Avg(snpc_stats.gamedetail.Finish),2) As 'Average Finish', 
 
    Sum(snpc_stats.gamedetail.Hits) As `Total Hits`, 
 
    Sum(snpc_stats.gamedetail.ChampFund) As ChampFund, 
 
    Sum(snpc_stats.games.BuyIn) + (snpc_stats.gamedetail.ChampFund) As Cost, 
 
    Sum(snpc_stats.gamedetail.Winnings) As Winnings, 
 
    Sum(snpc_stats.gamedetail.Winnings) - (snpc_stats.games.BuyIn) - (snpc_stats.gamedetail.ChampFund) As 'Total Winnings', 
 
    COUNT(snpc_stats.games.Round) As round 
 
From 
 
    snpc_stats.gamedetail Inner Join 
 
    snpc_stats.games On snpc_stats.games.GameID = 
 
    snpc_stats.gamedetail.GamesID 
 
Where 
 
    snpc_stats.games.Season = '2015 Season' 
 
Group By 
 
    snpc_stats.gamedetail.Player, snpc_stats.games.Season 
 
Order By 
 
    TotalPoints Desc

的選擇部使用它
+0

當我使用你的select語句時,我得到「Reference'TotalPoints'不被支持(參考組函數)」 – bech64 2015-02-07 22:31:48

+0

我編輯了答案,再次檢查它! – 2015-02-07 22:40:18

+0

它適用於'Points Behind'列,但它打破 – bech64 2015-02-07 22:54:29