Hive sql 进阶题 03

发布时间:2026/9/28 12:47:18
Hive sql 进阶题 03 用户注册、登录、下单综合统计从用户登录明细表user_login_detail和订单信息表order_info中查询每个用户的注册日期首次登录日期、总登录次数以及其在2021年的登录次数、订单数和订单总额。select t1.user_id, register_date, cnt, cnt2021, order_count_2021, order_amount_2021 from (select user_id, min(date_format(login_ts, yyyy-MM-dd)) register_date, count(*) cnt, count(if(year(login_ts) 2021, 1, null)) cnt2021 from user_login_detail group by user_id) t1 left join (select user_id, count(if(year(create_date) 2021, 1, null)) order_count_2021, sum(if(year(create_date) 2021, total_amount, 0)) order_amount_2021 from order_info group by user_id) t2 on t1.user_id t2.user_id;查询指定日期的全部商品价格从商品价格修改明细表sku_price_modify_detail中查询2021-10-01的全部商品的价格假设所有商品初始价格默认都是99。select sku_info.sku_id, nvl(new_price, 99) price from sku_info left join ( select sku_id, new_price from ( select sku_id, new_price, change_date, row_number() over (partition by sku_id order by change_date desc) rn from sku_price_modify_detail where change_date 2021-10-01 ) t1 where rn 1 ) t2 on sku_info.sku_id t2.sku_id;即时订单比例订单配送中如果期望配送日期和下单日期相同称为即时订单如果期望配送日期和下单日期不同称为计划订单。请从配送信息表delivery_info中求出每个用户的首单用户的第一个订单中即时订单的比例保留两位小数以小数形式显示。select round(count(if(order_date custom_date, 1, null)) / count(*), 2) percentage from (select user_id, order_date, custom_date, row_number() over (partition by user_id order by order_date) rn from delivery_info) t1 where rn 1;向用户推荐朋友收藏的商品现需要请向所有用户推荐其朋友收藏但是用户自己未收藏的商品请从好友关系表friendship_info和收藏表favor_info中查询出应向哪位用户推荐哪些商品。select distinct t1.user_id, friend_favor.sku_id from ( select user1_id user_id, user2_id friend_id from friendship_info union select user2_id, user1_id from friendship_info ) t1 left join favor_info friend_favor on t1.friend_id friend_favor.user_id left join favor_info user_favor on t1.user_id user_favor.user_id and friend_favor.sku_id user_favor.sku_id where user_favor.sku_id is null;查询所有用户的连续登录两天及以上的日期区间登录明细表user_login_detail中查询出所有用户的连续登录两天及以上的日期区间以登录时间login_ts为准。select user_id, min(login_date) start_date, max(login_date) end_date from ( select user_id, login_date, date_sub(login_date, rn) flag from ( select user_id, login_date, row_number() over (partition by user_id order by login_date) rn from ( select user_id, date_format(login_ts, yyyy-MM-dd) login_date from user_login_detail group by user_id, date_format(login_ts, yyyy-MM-dd) ) t1 ) t2 ) t3 group by user_id, flag having count(*) 2;

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询