目前,我正在发现有多少具有特定等级的球员在不同获胜百分比的球队中。我希望能够执行此查询,但是要经过多年,而不只是一年。我当前的查询如下。
SELECT ROUND(Wins, 1) AS 'Winning Percentage',
SUM(CASE WHEN Rating >= 2 and Rating < 5 THEN 1 ELSE 0 END) AS Rating1,
SUM(CASE WHEN Rating >= 5 and Rating < 7 THEN 1 else 0 END) AS Rating2,
SUM(CASE WHEN Rating >= 7 and Rating < 100 THEN 1 ELSE 0 END) AS Rating3
FROM #temp_table
GROUP BY ROUND(Wins, 1)
ORDER BY ROUND(Wins, 1)
预期结果如下。
Win % Rating1 Rating 2 Rating 3
0-25% 3 4 2
25%-100% 4 2 1
在#temp_table中,我有多年的WHERE子句。我希望能够执行上面的代码,但是要跨多年。 #temp_table当前具有一个@Year变量,我必须手动输入该变量来生成每个#temp_table。
My #temp_table is shown below.
Player Rating Year Win %
Bonds 10 2014 25%
Smith 2 2011 42%
Bryant 5 2013 33%
答案 0 :(得分:0)
您可以创建一个case
,它将创建两个组-0-25%
和25%-100%
。然后group by
此表达式。您可以如上所述将year
添加到查询中。
SELECT case when Wins < 25 then '0-25%'
when Wins between 25 and 100 then '25%-100%' end AS 'Winning Percentage',
year,
SUM(CASE WHEN Rating >= 2 and Rating < 5 THEN 1 ELSE 0 END) AS Rating1,
SUM(CASE WHEN Rating >= 5 and Rating < 7 THEN 1 else 0 END) AS Rating2,
SUM(CASE WHEN Rating >= 7 and Rating < 100 THEN 1 ELSE 0 END) AS Rating3
FROM #temp_table
GROUP BY case when Wins < 25 then '0-25%'
when Wins between 25 and 100 then '25%-100%' end,
year