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号