SQL Server 高階查詢-AVG()(一)
@
第1
關:AVG()
函式的使用
返回某一欄位的平均值
AVG()
函式通過計算某欄位(列)內容(行)的個數和它們的數值之和來返回某一欄位的平均值。
語法規則為:
SELECT AVG(column_name)
FROM table_name
舉個例子
我們想從表 Customers
中,檢索到所有消費者消費金額的平均值。
表 Customers
的內容如下表所示:
輸入:
SELECT AVG(cost) as avg_cost
FROM Customers
輸出:
avg_cost |
---|
2415.26 |
在這個例子裡, SELECT
語句只負責返回一個值,這個值就是 avg_cost
avg_cost
是我們為檢索資料起的“小名”,它包含著所有消費者消費金額的平均值。
Tips:
如果你沒有為你的檢索結果起個“小名”, 那它就只能是供你觀賞的一個值,在接下來的操作中,你將不能繼續使用它。所以為了以防萬一,好的習慣是為自己每一個檢索結果,都起一個有意義的名字,好看又好記。
返回某一欄位指定內容的平均值
AVG()
函式不僅能計算某欄位(列)的平均值,如果你願意,還能為 SELECT
語句增加條件,以此來計算某些特定條件下某欄位的平均值。
舉個例子
我們想從表Customers
中,檢索到所有叫Alice
的消費者消費金額的平均值。表 Customers
的內容與上例一致。
輸入:
SELECT AVG(cost) as avg_alice_cost
FROM Customers
WHERE cust_name LIKE 'Alice%'
與上例不同的是,我們在這裡加入了條件篩選語句 WHERE
。WHERE
語句幫我們過濾了所有不叫 Alice
的人,因此,我們所查到的消費金額平均值是所有叫Alice
的人的消費平均值。
程式設計要求
我們已經為你建好了資料庫與資料表,並添加了相應的資料內容。你只需補全右側程式碼片段中 Begin-End
區間的程式碼,返回表Products
中商品價格( prod_price
)大於平均值的商品的 prod_name
和 prod_price
其中表 Products
的內容如下表所示:
提示:
- 與本關例子不同的是,在練習中需要你們返回的是
prod_name
和prod_price
,而不是平均值; - 與本關例子不同的是,在練習中需要你們設定的過濾條件是平均值;
- SELECT 語句是可以巢狀使用的,比如有如下形式的程式碼:
SELECT column_A
FROM table
WHERE column_A < (SELECT column_B FROM table)
測試說明
測試過程:
- 本關涉及到的測試檔案是
step1_test.sh
,平臺將執行使用者補全的step1.sql
檔案,得到資料; - 將得到的資料與答案比較,判斷程式碼是否正確。
如果操作正確,你將得到如下的結果:
開始你的任務吧,祝你成功!
USE Mall
GO
SET NOCOUNT ON
------ return two columns that the price bigger than average price ------
-- ********** Begin ********** --
SELECT prod_name, prod_price
FROM Products
WHERE prod_price >
(SELECT AVG(prod_price) FROM Products);
-- ********** End ********** --
GO
我的解題思路:
首先,我會按照昨天的
的順序去寫,1. FROM 和 JOINs 2. WHERE 3. GROUP BY 4. HAVING 5. SELECT 6. DISTINCT 7. ORDER BY 8. LIMIT / OFFSET
照著這個順序,你能根據計算機思維去思考怎麼過濾和篩選資料
例如這一題,我先寫FROM prod_price 再寫where條件
where條件再更具要求去寫,如根據那個欄位去篩選,這一題,是根據欄位名 商品價格( prod_price )篩選,然後是運算子,再然後就是巢狀語句,先是算再然後是數學函式,
段奧娟20歲生日會概念視訊,走著走著孩子突然就長大了