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
表中订单日期等于客户首选送货日期的订单所占的比例。