Avg平均值 和占比
SELECT ROUND( AVG(order_date = customer_pref_delivery_date) * 100, 2 ) AS immediate_percentage FROM Delivery ;
等價于
SELECT ROUND( AVG(CASE WHEN order_date = customer_pref_delivery_date THEN 1 ELSE 0 END) * 100, 2 ) AS immediate_percentage FROM Delivery ;
等價于
這條SQL查詢的意思是計算出在 Delivery 表中,訂單日期 (order_date) 等于客戶首選送貨日期 (customer_pref_delivery_date) 的訂單比例,并將結果四舍五入保留兩位小數后返回。
具體來說:
-
AVG(CASE WHEN order_date = customer_pref_delivery_date THEN 1 ELSE 0 END):這部分使用了一個CASE表達式來判斷每條記錄中order_date是否等于customer_pref_delivery_date。如果相等則返回1,否則返回0。然后AVG函數計算所有記錄中CASE表達式的平均值,這個平均值即為訂單日期等于客戶首選送貨日期的比例。 -
ROUND(..., 2):這是將上述計算得到的比例值四舍五入保留兩位小數。 -
AS immediate_percentage:將計算得到的比例值命名為immediate_percentage,作為查詢結果的列名。
因此,整個查詢語句的作用是返回 Delivery 表中訂單日期等于客戶首選送貨日期的訂單所占的比例。

浙公網安備 33010602011771號