千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  应聘面试  >  大数据面试题  > 交易表结构为user_id(用户ID),order_id(订单ID),pay_time(付款时间),order_amount(金额)

交易表结构为user_id(用户ID),order_id(订单ID),pay_time(付款时间),order_amount(金额)

来源:千锋教育
发布人:qyf
时间: 2022-09-30 15:41:04 1664523664

交易表结构为user_id(用户ID)

  1. 写sql查询过去一个月付款用户量(提示:用户量需去重)最高的三天分别是哪几天?

  2. 写sql查询昨天每个用户最后付款的订单ID及金额select date_format(pay_time,'%Y-%m-%d') days , count(distinct user_id) from table where pay_time>=date_sub(now(),interval 1 month) #过去一个月 group by date_format(pay_time,'%Y-%m-%d') order by count(distinct user_id) desc limit

  3 思路:求最高的三天,肯定是先排序,后limit. 先求出每天的付款用户量,既然每天,那肯定要按天分组了;按照题目要求过滤条件有:

  1.过去一个月

  2.付款用户(即要排除未付款的用户),另外求用户量需要去重,题目中也有提示,因为存在同一个用户每天有多笔消费记录的情况;

  返回排在前三的付款用户量及对应的时间(天) select a.user_id, a.order_amount from (select user_id, order_amount, row_number() over(partition by user_id order by pay_time desc) as rank from table where date_format(pay_time,"%Y-%m-%d")=date_sub(curdate(),interval 1 day) #昨天 ) as awhere rank=1

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT