qidao123.com技术社区-IT企服评测·应用市场

标题: 校招算法笔口试 | SQL笔试口试编程题-短视频直播间晚上11-12点之间各直播间的在线人数 [打印本页]

作者: 麻花痒    时间: 2025-5-7 05:27
标题: 校招算法笔口试 | SQL笔试口试编程题-短视频直播间晚上11-12点之间各直播间的在线人数
题目## 题目## 题目

题目链接
这道题目要求我们统计在晚上特定时间段里各个直播间的在线人数,我们要做的事情如下:
1. 确定总体问题

我们需要统计在晚上11点到12点之间,各个直播间的在线人数,并按在线人数降序排序。
2. 分析关键问题


3. 办理每个关键问题的代码及讲解

步骤1:毗连表

我们利用JOIN将user_view_tb和room_info_tb表毗连起来:
  1. FROM
  2.     user_view_tb u
  3. JOIN
  4.     room_info_tb r ON u.room_id = r.room_id
复制代码

步骤2:筛选时间段

我们利用WHERE子句筛选出在晚上11点到12点之间在线的用户:
  1. WHERE
  2.      u.in_time <= '23:59:59' AND u.out_time >= '23:00:00'
复制代码

步骤3:计算独立用户数

我们利用COUNT(DISTINCT u.user_id)对每个直播间的独立用户数举行计数:
  1. SELECT
  2.     u.room_id,
  3.     r.room_name,
  4.     COUNT(DISTINCT u.user_id) AS user_count
复制代码

步骤4:排序输出

我们利用ORDER BY按在线人数降序排序输出效果:
  1. ORDER BY
  2.     user_count DESC
复制代码
完备代码

  1. SELECT
  2.     u.room_id,
  3.     r.room_name,
  4.     COUNT(DISTINCT u.user_id) AS user_count
  5. FROM
  6.     user_view_tb u
  7. JOIN
  8.     room_info_tb r ON u.room_id = r.room_id
  9. WHERE
  10.      u.in_time <= '23:59:59' AND u.out_time >= '23:00:00'
  11. GROUP BY     u.room_id, r.room_nameORDER BY
  12.     user_count DESC
  13. ;
复制代码
题目链接
这道题目要求我们找出下单次数最多的前三个用户,我们要做的事情如下:
1. 确定总体问题

我们需要统计每个用户的下单次数,并按次数降序排列,并找出下单次数最多的前三个用户,返回这些用户的ID及其下单次数。
2. 分析关键问题


3. 办理每个关键问题的代码及讲解

步骤1:筛选下单记载

我们利用WHERE子句筛选出步骤为order的记载:
  1. where
  2.     step = 'order'
复制代码

步骤2:统计下单次数

我们利用COUNT函数对每个用户的下单次数举行计数,并按用户ID分组:
  1. select
  2.     uid,
  3.     count(*) as cnt
  4. from
  5.     user_client_log
  6. group by
  7.     uid
复制代码

步骤3:排序和筛选

我们利用ORDER BY按下单次数降序排列,并利用LIMIT取出下单次数最多的前三个用户:
  1. order by
  2.     cnt desc, uid
  3. limit 3
复制代码

完备代码

  1. select    uid,    count(*) as cntfrom    user_client_logwhere
  2.     step = 'order'
  3. group by    uidorder by
  4.     cnt desc, uid
  5. limit 3
  6. ;
复制代码
题目链接
最近做了京东的24年春招题,题目如下:

题目分析

在这道题目中,我们需要从两个表中提取数据:orders 和 customers。以下是每个表的结构及字段的汉语意思:
目标:计算每个城市的订单总金额。
输出要求:输出每个城市的名称及其订单总金额,按订单总金额降序排列,如果总金额相同则按城市名称升序排列。
知识点关键词:SQL毗连、聚合函数、分组、排序
解答步骤

完备代码

  1. select c.city,sum(o.total_amount) as total_order_amountfrom orders o
  2. join customers c on c.customer_id = o.customer_id
  3. group by c.cityorder by total_order_amount desc, c.city asc
复制代码
近似题目练习推荐

获取指定客户每月的消费额

统计所有课程参加培训人次

返回顾客名称和相关订单号以及每个订单的总价


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.4