首页 / SQL面试
#

SQL面试

#
15111次浏览 159人互动
此刻你想和大家分享什么
热门 最新
SQL面试题求助
牛客916304435号:in吧
点赞 评论 收藏
分享
#SQL#SQL题求助#数据分析笔试
需要从sell_information表中查找每个用户在每个国家的消费订单数,如果没有则为0,求问这个题怎么解
Neptune🍉🍏🍇🍊:select a.name_id,a.order_country,ifnull(b.cnt,0) as order_counts from sell_information a left join (select name_id,order_country,count(order_id) cnt from sell_information group by name_id,order_country) b on a.name_id=b.name_id and a.order_country=b.order_country 首先就是查找每个用户每个国家的消费订单数,也就是得到表b(因为目前表b是不含订单为0的国家的),然后再让原表进行左连接,左连接的目的就是保留原有的国家,连接之后的新表就含有每个国家了,然后再用ifnull函数将这些没有订单数的国家的订单数量变成0.
点赞 评论 收藏
分享
2024-04-13 11:42
已编辑
清华大学 大数据开发工程师
数据方向必考SQL 连续登录问题
#数据人的面试交流地##数据人##SQL面试#**均为社区同学面试遇到题目**题目:找出连续登录5天的用户图1为模拟数据图2为运行结果Hsql解法如下selectuid,curr,5_dayfrom (        select                 uid,                to_date(`login_date`) curr, --当前日期                last_value(to_date(`login_date`))                         over(partition by uid order by to_date(`login_date`) asc                                 rows BETWEEN  CURRENT ROW and 4 FOLLOWING) as 5_day, -- 当前日期后四天的日期值                DATEDIFF(                last_value(to_date(`login_date`))                         over(partition by uid order by to_date(`login_date`) asc                                 rows BETWEEN  CURRENT ROW and 4 FOLLOWING),                to_date(`login_date`)) AS DRFF_DAY -- 当前日期后四天的日期值 - --当前日期 = 最近五次登录的间隔天数,间隔4才是连续登录5天        from                  (select distinct * from tmp) t1 --一个用户一天可能登录多次,只保留一次) t1 where DRFF_DAY == 4#数据人的面试交流地#更多实战题目及解法思路都在社区!
点赞 评论 收藏
分享
2020-03-23 17:47
已编辑
清华大学 数据分析师
数据分析SQL面试题求解
舞哈哈哈:使用MySQL做的,个人理解 select t1.order_add_user, t1.num, count(distinct t2.num)+1 as rank, (case when count(distinct t2.num)+1<=3 then t1.num*50+1000 else t1.num*50 end) as bonus from (select order_add_user, sum(quantity) as num, date_format(order_add_time,"%Y-%m") as month from order where order_add_time<=date_format(now(),"%YYYY-%mm-%dd") and order_add_time>date_format(now(),"%Y-%m-01") group by order_add_user order by num desc limit 10 ) t1 left join (select order_add_user, sum(quantity) as num, date_format(order_add_time,"%Y-%m") as month from order where order_add_time<=date_format(now(),"%YYYY-%mm-%dd") and order_add_time>date_format(now(),"%Y-%m-01") group by order_add_user order by num desc limit 10 ) t2 on t1.num<t2.num group by t1.order_add_user order by t1.num desc;
点赞 评论 收藏
分享
玩命加载中
牛客网
牛客企业服务