1

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) 的订单比例,并将结果四舍五入保留两位小数后返回。

具体来说:

  1. 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 表达式的平均值,这个平均值即为订单日期等于客户首选送货日期的比例。

  2. ROUND(..., 2):这是将上述计算得到的比例值四舍五入保留两位小数。

  3. AS immediate_percentage:将计算得到的比例值命名为 immediate_percentage,作为查询结果的列名。

因此,整个查询语句的作用是返回 Delivery 表中订单日期等于客户首选送货日期的订单所占的比例。

posted @ 2024-08-14 10:49  萌哥-爱学习  阅读(41)  评论(0编辑  收藏  举报