题69:
根据下表写一条 SQL 查询语句获取即时订单在所有用户的首次订单中的比例,结果保留两位小数。
其中:delivery_id 是表的主键,该表保存着顾客的食物配送信息,顾客在某个日期下了订单,并指定了一个期望的配送日期(和下单日期相同或者在那之后)。
解题思路:
(1)按照用户分组,筛选出所有首次订单 ;
(2)针对首次订单遍历记录并标记。
select round (
sum(order_date = customer_pref_delivery_date) * 100 /
count(*),--计算即时订单在所有用户的首次订单中的比例
2--用round函数保留两位小数
) as immediate_percentage
from Delivery
where (customer_id, order_date) in (
select customer_id, min(order_date)--查询首单客户的id
from Delivery
group by customer_id
);