SQL學習(五) 高階處理
阿新 • • 發佈:2020-12-25
5.1
請說出針對本章中使用的 product(商品)表執行如下 SELECT 語句所能得到的結果。
SELECT product_id
,product_name
,sale_price
,MAX(sale_price) OVER (ORDER BY product_id) AS Current_max_price
FROM product
就是將每個商品按照累計的順序找到其sale_price前面的最大值,作為新的一列
5.2
繼續使用product表,計算出按照登記日期(regist_date)升序進行排列的各日期的銷售單價(sale_price)的總額。排序是需要將登記日期為NULL 的“運動 T 恤”記錄排在第 1 位(也就是將其看作比其他日期都早)
SELECT regist_date, SUM(sale_price) AS Current_sum FROM product GROUP BY regist_date WITH ROLLUP;
5.3
思考題
① 視窗函式不指定PARTITION BY的效果是什麼?
② 為什麼說視窗函式只能在SELECT子句中使用?實際上,在ORDER BY 子句使用系統並不會報錯。
① 不指定的話,只按照ORDER BY的列來全域性排序。 如果指定了PARTITION BY,則會按照指定的列進行細分排序 ② 執行順序FROM → WHERE → GROUP BY → HAVING→ SELECT → ORDER BY 視窗函式是為了動態分析處理,在SELECT子句可以進行篩選,而ORDER BY子句中只是用來排序,無法實現相應功能。