2017-07-06 56 views
-1

我正在試圖製作一個包含幾個變量的圖表,該圖表顯示了按年份銷售到大學體育賽事的門票銷售總額,以及它在數據庫中存在的其他事件之間的排名。我很難找出一種方法使排名對應於每一行的年份。如何讓MySQL返回與子查詢相關的排名?

這裏是我開始用:

SELECT 
Year as year, 
School, 
`Ticket Sales`, 
(SELECT 
    COUNT(School)+1 
    FROM schools 
    WHERE Year = 2016 AND `Ticket Sales` > (
     SELECT `Ticket Sales` 
      FROM schools 
      WHERE School = "College" AND Year = 2016) 
     ) as Rank 
FROM schools 
WHERE School = "College" 
ORDER BY Year DESC 

這裏就是我找回(注意它提供15 - 第一年的排名 - 爲每個實例):

Year School Ticket Sales Rank 
2016 College 29054868 15 
2015 College 29586555 15 
2014 College 26928635 15 
2013 College 25888524 15 
2012 College 23432735 15 
2011 College 26467598 15 
2010 College 18395654 15 
2009 College 20711850 15 
2008 College 17107971 15 
2007 College 17287093 15 
2006 College 15351891 15 
2005 College 12767307 15 

編輯:要清楚,排名下的人數應該每年不同。 2015年的排名是在2016年的不同,比2014年不同的是,等

+0

您正在選擇Rank作爲所有記錄返回15的子查詢。爲了幫助您,您能否請您提供一些樣品數據和預期結果? –

回答

0

我相信這是你想什麼來完成:

SELECT Year, 
     School, 
     sum(`Ticket Sales`) as `Ticket Sales`, 
     Count(*) as Rank 
FROM schools 
WHERE School = "College" 
GROUP BY Year, 
     School 
ORDER BY Year DESC 

見樣品結果here