開始使用免費開始

這裡的 OVER 是什麼?

視窗函式可以依你想用來排序資料的任意變數,建立一個資訊的 RANK。在設定時,你需要指定要用哪一個欄位或計算結果來產生名次。方法是在 OVER() 子句中加入 ORDER BY 子句。以下是範例:

SELECT 
    id,
    RANK() OVER(ORDER BY home_goal) AS rank
FROM match;

在這個練習中,你會依各聯賽在一場比賽中平均進球數的高低,建立一個比賽的排名資料集,以找出哪些聯賽通常進更多球。

本練習屬於課程

SQL 資料操作

檢視課程

練習說明

  • leaguematchSELECT 聯賽名稱與平均總進球數。
  • 完成視窗函式,計算資料庫中所有聯賽的平均進球數之 RANK()
  • 讓名次以主隊與客隊進球數總和的平均值作為 OVERORDER BY

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

SELECT 
	-- Select the league name and average goals scored
	___ AS league,
    ___(___ + ___.away_goal) AS avg_goals,
    -- Rank each league over the average goals
    ___ ___(___ ___ AVG(___.home_goal + ___)) AS league_rank
FROM league AS l
LEFT JOIN match AS m 
ON l.id = m.country_id
WHERE m.season = '2011/2012'
GROUP BY l.name
-- Order the query by the rank you created
ORDER BY ___;
編輯並執行程式碼