网站开发费用属于哪种无形资产,直播软件平台,产品工业设计网站,wordpress设置百度站长主动推送前述
推荐学习#xff1a; 通俗易懂的学会#xff1a;SQL窗口函数
题目描述
leetcode题目#xff1a;1174. 即时食物配送 II 写法一#xff1a;窗口函数
分组排序#xff08;以customer_id 分组#xff0c;按照order_date 排序#xff09;#xff0c;窗口函数应用。…前述
推荐学习 通俗易懂的学会SQL窗口函数
题目描述
leetcode题目1174. 即时食物配送 II 写法一窗口函数
分组排序以customer_id 分组按照order_date 排序窗口函数应用。
select round((sum(if(order_datecustomer_pref_delivery_date, 1, 0))/count(*))*100, 2) as immediate_percentage
from (select *,row_number() over(partition by customer_id order by order_date) as first_orderfrom Delivery
) A
where A.first_order 1注意这里要用row_number() 确保每个用户的首次订单只有一个。
如果用dense_rank()或者是rank()例如当用户1在同一天下了两个订单时此时会将这两个订单都统计在内但实际只需要统计一个即可。
rank()、dense_rank()、row_number() 的区别 图片引用自 通俗易懂的学会SQL窗口函数
写法二 group by
正确写法
-- 方法二不用窗口函数, 用group by, right
-- 再用一次 group by customer_id 把同一个用户的两个订单去重
select round((sum(if(order_datecustomer_pref_delivery_date, 1, 0))/count(*))*100, 2) as immediate_percentage
from (select *from Deliverywhere(customer_id,order_date)in (select customer_id, min(order_date)from Deliverygroup by customer_id)group by customer_id
) A1. 错误举例一
试图不用窗口函数直接用group by 下图是错误示例
错误原因 2. 错误举例二 定位问题