我做完上一道题,决定总结一下了,因为现在还是没有一个我认为好的思路去构造语句,这里开始试一试新的思路。果然想要好一点的时候,总是像便秘一下,真的想拉,但是真的难拉啊
一、题目相关内容
1)相关的表和题目
2)帮助理解题目的示例,提供返回结果的格式
二、初步的理解和尝试
1.理解这个表的作用,他的作用是什么?
配送的信息:
delivery_id是主键,配送这件事是不能重复。
Customer_id 发起这个配送的人的id。
order_date客户下单时间
customer_pref_delivery_date 客户指定下单时间
理解了表的目的,需要根据订单的某些信息,把这个订单进行分类。
解题的重点是获取每个用户的即时订单,每个用户的首次订单,最后获取所有用户的的首次订单是即时订单的比率。通过用户Id分组,找出首次订单(回过来其实这个思路还行但是没办法和很多事情结合起来。)
2.第一次尝试
Select Round((Min(order_date)= customer_pref_delivery_date)/count(*)*100,2) as
immediate_percentage from delivery group by customer_id;
我没能理解为什么是这样的结果,过了一天有想法了,就是每一个取值都有,说明我之前的理解还是有错误,要用sum,然后下面是一顿乱操作没有一个对的,现在不是到为什么错,以后做分析吧。
3.又一次尝试
Select Round(count(Min(order_date)= customer_pref_delivery_date)/count(*)*100,2) as
immediate_percentage from delivery group by customer_id;
又有这样的报错
4.又一次尝试
Select Round(select count(1) from delivery where (Min(order_date)= customer_pref_delivery_date)/count(*)*100,2) as
immediate_percentage from delivery group by customer_id;
5.又一次尝试
Select Round(sum(count(Min(order_date)= customer_pref_delivery_date))/count(*)*100,2) as
immediate_percentage from delivery group by customer_id;
三、题解展示和分析
还是看题解了,这一题还是没想出来。
好牛,先把所有用户的首次订单筛选出来,然后算首次订单里面同时也是即使订单的记录数,除以总记录数就行了。
这里还有一个新的用法 where in。
我的理解是字段在in后面的条件里的记录可表示出来。
Where通过in的方式提取,很需要思考,什么情况能这样做呢?
四、总结
1.where in 没太多的想法,因为我认为还没掌握这个方法,只做个简单的记录。
2.让人成长也是挫败的一题啊。