SQL⾯试题拼多多
活动运营数据表
表orders
⽤户id订单⾦额下单时间
user_id order_pay order_time
表act_apply
活动编号报名⽤户id报名时间
act_id user_id act_time
1. 统计每个活动对应所有⽤户在报名后产⽣的总订单⾦额,总订单数。(每个⽤户限报⼀个活动,题⼲默认⽤户报名后产⽣的订单均为参
加活动的订单)。
select act_id,
sum(order_pay)as总订单⾦额,
count(order_time)as总订单数
from act_apply left join orders
on act_apply.user_id = orders.user_id
where order_time >= act_time
group by act_id;
活动表(act_apply)和订单表(orders)进⾏left join,通过user_id连接。
多表查询sql语句面试题where筛选出下单时间(order_time)⼤于等于报名活动时间(act_time)。按活动(act_id)进⾏分组,选出活动名称、总订单⾦额(sum(order_pay)) 和总订单数(count(order_time))。
3. 统计每个活动从开始后到当天(考试⽇)平均每天产⽣的订单数,活动开始时间定义为最早有⽤户报名的时间。(涉及到时间的数据
类型均为:datetime)。
select act_id,每个活动开始时间,
(sum(order_time)/ datediff(NOW()-每个活动开始时间))as平均每天产⽣的订单数
(select act_id, user_id, act_time,
min(act_time)over(partition by act_id)as每个活动开始时间
from act_apply)as活动开始时间表
left join orders on活动开始时间表.user_id = orders.user_id
der_time >=活动开始时间表.act_time
group by活动开始时间表.act_id
⾸先通过窗⼝函数min(act_time) over(partition by act_id) 选出每个活动的开始时间。
然后再通过user_id进⾏left join,使⽤where筛选出活动后产⽣的订单。
按照活动act_id进⾏分组,选出每个活动act_id,活动开始时间。
再通过(sum(order_time)) / (datediff(NOW() - 每个活动开始时间))计算出每个活动平均每天的订单量。
有问题的地⽅请⼤家指教。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。