2017-04-03 55 views
0

因此,我有一個有歷史草稿的表格。稱之爲「草稿結果」。夢幻足球數據postgre sql獲取第一批實例

team_id pick_number round position playerID 
0002   01    01  WR   12 
0002   01    02  QB   09 
0002   01    03  TE   32 
0002   01    04  RB   23 
0034   02    01  WR   43 
0034   02    02  WR   24 
0034   02    03  QB   04 
0034   02    04  QB   11 

只有每個團隊id有一個選擇20輪。我有大約7000個team_ids。我想要完成哪一輪每個團隊採取他們的第一個QB,我需要幫助搞清楚一個SQL查詢來完成。

SELECT "Round", COUNT("Team_Id") FROM public."Draft Results" 
WHERE "Position" = 'QB' 
GROUP BY "Round" 
ORDER BY "Round" asc 

有5個不同的位置: 'QB', 'RB', 'WR', 'TE', 'd'

在這種情況下,我會希望查詢顯示,這裏是1在第二輪選出第一個QB的球隊和第一個QB在第三輪被選中的1支球隊。目前我的查詢會顯示我提到的內容,並且1隊在第4輪中選擇了QB。儘管這不是那支隊伍第一QB選擇

+0

會輸出什麼樣的? – GurV

+0

在這種情況下,它將是team_id和round,並且對於我提供的樣本數據,它將是'0002 | 02'在第一行和'0034 | 03'在第二個 –

回答

1

是不是很簡單的聚集與min(他們已經在第三拿起一個):

select team_id, 
    min(round) as round 
from "Draft Results" 
where position = 'QB' 
group by team_id; 
1

也許嘗試在「圓MIN()聚合函數「列

SELECT MIN("Round"), COUNT("Team_Id") FROM public."Draft Results" 
    WHERE "Position" = 'QB' 
    GROUP BY "Round" 
    ORDER BY "Round" asc 

然後這會抓住爲最小值‘回合’列,其將是第一個或最低的‘舍入’該位置將是‘QB’。在你的例子中,team_id 0034在03輪和04輪選擇了'QB',但選擇這兩個的MIN()值將選擇第一輪或最低輪,他們選擇了第三輪的'QB'。我希望這有助於我理解你正在努力完成什麼。

+0

那有用嗎?你知道如何分組和按作品分組嗎? – GurV

+0

我仍然在學習自己,只是試圖幫助。 – J2112O

0

如果你想看到整個表,但受限於你想憑藉最早一輪邏輯返回的行,我會用這樣的:

SELECT * 
FROM draft_results d 
INNER JOIN (
      SELECT team_id, MIN(round_id) minRndQBPicked 
      FROM draft_results d 
      WHERE position = 'QB' 
      GROUP BY team_id 
      ) minRnd ON d.team_id = minRnd.team_id AND d.round_id = minRnd.round_id