image1 image2我正在尝试写一个sql函数来显示我们数据库中每一年的最高ppg的球员的年份、球员名称和ppg。
我们有一个球员表,里面有所有的统计数据,还有一个球队表,里面有每个赛季的统计数据,作为球队的总数。
我想做的是从每个赛季得到最高的得分者,所以:
2010: Jake 10ppg
2011: Jake 12 ppg
2012 Carl 13 ppq等。
下面是我当前的查询
SELECT Year, PlayerName, MAX(PPG) AS PPG
FROM PLAYERS_T, TEAM_T
GROUP BY Year
ORDER BY PPG;然而,这不起作用,我需要做些什么才能使其起作用?
发布于 2016-12-06 05:19:33
这应该可以工作,但将显示重复的记录,如果相同的PPG。我不知道团队表在那里有什么用
WITH PLAYERS_T as (
     SELECT 2010 "Year",  'Jake' "PlayerName", 10 ppg     
     UNION 
     SELECT 2011 "Year",  'Jake' "PlayerName", 12 ppg     
     UNION 
     SELECT 2012 "Year",  'Carl' "PlayerName", 13 ppg     
)
 SELECT T1."Year", T1."PlayerName", T1.PPG
 FROM PLAYERS_T T1
 LEFT JOIN PLAYERS_T T2
   ON T1."Year" = T2."Year"
  AND T1.PPG <  T2.PPG
 WHERE T2."Year" IS NULL输出

发布于 2016-12-06 05:33:28
试试这个:
SELECT players_T.playername, players_T.ppg, players_T.year
FROM
(SELECT year, MAX(PPG) AS mx
 FROM players_T
 GROUP BY year) sub
INNER JOIN players_T ON sub.mx = players_T.ppg
WHERE sub.year = players_T.year
ORDER BY players_T.year在子查询中,这将查找每年的最大ppg。然后,我们与ppg上的player表连接以找到player名称。结果应该是球员名称,ppg和年份在一起。让我知道你发现了什么!
编辑:需要包含用于year的WHERE子句
https://stackoverflow.com/questions/40983457
复制相似问题