SQL_SQL_常见面试问题

问题类型 :SQL优化

问题描述 :用户浏览日志(date, user_id, video_id), 统计 2020.03.29 观看不同视频个数的前5名 user_id。

思路 :主要注意预计算,避免直接去重

解决方案 :

Hive_HQL_Hive优化_复杂SQL_观看不同视频个数的前5名_sql观看视频数最多的前五名用户_高达一号的博客-CSDN博客

问题描述 : 如何对多个count distinct 优化 

SELECT dt,
       COUNT(DISTINCT uuid) AS uv,
       COUNT(DISTINCT CASE WHEN is_click THEN uuid END) AS click_uv,
       ...
GROUP BY dt 

思路 : 针对于最细的颗粒度,先进行去重,再去计算最终的指标

解决方法 :

SELECT dt, COUNT(uuid) AS uv, COUNT(click_uuid) AS click_uv
FROM (
    SELECT dt, uuid, MAX(click_uuid) AS click_uuid
    FROM (
        SELECT dt, uuid,
            CASE WHEN is_click THEN uuid END AS click_uuid
        FROM your_table
    ) t1 
    GROUP BY dt, uuid
) t2 
GROUP BY dt;

问题描述 : 有50W个 店铺,每个顾客访客访问任何一个店铺的任何一个商品时都会产生一条访问日志,
访问日志存储的表名为Visit,访客的用户id为uid,被访问的店铺名称为shop,

数据如下:

                uid shop

                u1  a
                u2  b
                u1  b
                u1  a
                u3  c
                u4  b
                u1  a
                u2  c
                u5  b
请统计:
(1)每个店铺的UV(访客数)
(2)每个店铺访问次数top3的访客信息。输出店铺名称、访客id、访问次数
解题方案 : SQL_求店铺的topN && 开窗函数数据倾斜_高达一号的博客-CSDN博客

问题类型 :窗口函数使用

问题  求连续n月的下单用户

有如下表 ,求连续3个月的下单用户

order_no |  uid  | dep_no | amount | datetime

1    |   2002  |  20  |   2000.0 |  2023-04-25 12:30:20

解题方案 : Hive_HQL_复杂SQL_连续发单天数_hive支持复杂sql_高达一号的博客-CSDN博客

问题  求年度分月份,累计下单金额

有如下表 ,求业务部分月的年累计订单金额

order_no |  uid  | dep_no | amount | datetime

1    |   2002  |  20  |   2000.0 |  2023-04-25 12:30:20

问题 求路径访问深度

今天面试遇到了一道题,通过HQL 求访问深度以及当前页与下一页面的地址

前提假设:

1.用户只访问同一page一次

2.用户单一标签页跳转

有如下图1 转换为 图2 格式,即访问路径问题

 

 问题答案 : HIVE_SQL_复杂SQL_求访问深度以及前一跳和下一跳的地址_高达一号的博客-CSDN博客

问题类型 :SQL巧解答

问题 已知登陆表中有 uid、login_time,求每个用户的最大连续登陆天数

uid、login_time

A  | 2020-08-01 10:00:00

(该问题为窗口函数问题中 : 连续n月下单用户的延申题目,可以两道问题一起考察)

问题答案 : SQL 求最大连续登陆天数_连续登录天数sql_机灵小布衣的博客-CSDN博客

问题  一份登陆日志,查到今天每个人倒数第二次登陆的时间、地点、ip等信息?

问题解法 :避免开窗函数导致的数据倾斜,先求最大,再求次大

问题答案 :SQL_分组求次大问题_一份登陆日志,查到今天每个人倒数第二次登陆的时间、地点、ip等信息?_高达一号的博客-CSDN博客

问题类型 : 复杂SQL

问题  求每个登录日期的次日留存率 

问题答案 :

SQL_牛客网_SQL264_求每个登陆日期的次日留存率_高达一号的博客-CSDN博客

问题解法 :日期函数 + 子查询

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值