题目## 题目## 题目
题目链接
这道题目要求我们统计在晚上特定时间段里各个直播间的在线人数,我们要做的事情如下:
1. 确定总体问题
我们需要统计在晚上11点到12点之间,各个直播间的在线人数,并按在线人数降序排序。
2. 分析关键问题
- 毗连表:将user_view_tb和room_info_tb表毗连起来,以便获取每个直播间的名称。
- 筛选时间段:筛选出在晚上11点到12点之间在线的用户。
- 计算独立用户数:对每个直播间的独立用户数举行计数。
- 排序输出:按在线人数降序排序。
3. 办理每个关键问题的代码及讲解
步骤1:毗连表
我们利用JOIN将user_view_tb和room_info_tb表毗连起来:
- FROM
- user_view_tb u
- JOIN
- room_info_tb r ON u.room_id = r.room_id
复制代码
- JOIN room_info_tb r ON u.room_id = r.room_id:通过直播间ID毗连两个表,以便获取每个直播间的名称。
步骤2:筛选时间段
我们利用WHERE子句筛选出在晚上11点到12点之间在线的用户:
- WHERE
- u.in_time <= '23:59:59' AND u.out_time >= '23:00:00'
复制代码
- u.in_time <= '23:59:59' AND u.out_time >= '23:00:00':筛选出在指定时间段内涵线的用户。
步骤3:计算独立用户数
我们利用COUNT(DISTINCT u.user_id)对每个直播间的独立用户数举行计数:
- SELECT
- u.room_id,
- r.room_name,
- COUNT(DISTINCT u.user_id) AS user_count
复制代码
- COUNT(DISTINCT u.user_id) AS user_count:计算每个直播间的独立在线用户数,DISTINCT去重。
步骤4:排序输出
我们利用ORDER BY按在线人数降序排序输出效果:
完备代码
- SELECT
- u.room_id,
- r.room_name,
- COUNT(DISTINCT u.user_id) AS user_count
- FROM
- user_view_tb u
- JOIN
- room_info_tb r ON u.room_id = r.room_id
- WHERE
- u.in_time <= '23:59:59' AND u.out_time >= '23:00:00'
- GROUP BY u.room_id, r.room_nameORDER BY
- user_count DESC
- ;
复制代码 题目链接
这道题目要求我们找出下单次数最多的前三个用户,我们要做的事情如下:
1. 确定总体问题
我们需要统计每个用户的下单次数,并按次数降序排列,并找出下单次数最多的前三个用户,返回这些用户的ID及其下单次数。
2. 分析关键问题
- 筛选下单记载:从user_client_log表中筛选出步骤为order的记载。
- 统计下单次数:对每个用户的下单次数举行计数。
- 排序和筛选:按下单次数降序排列,并取出下单次数最多的前三个用户。
3. 办理每个关键问题的代码及讲解
步骤1:筛选下单记载
我们利用WHERE子句筛选出步骤为order的记载:
- WHERE step = 'order':筛选出所有下单记载。
步骤2:统计下单次数
我们利用COUNT函数对每个用户的下单次数举行计数,并按用户ID分组:
- select
- uid,
- count(*) as cnt
- from
- user_client_log
- group by
- uid
复制代码
- COUNT(*) AS cnt:计算每个用户的下单次数。
- GROUP BY uid:按用户ID分组。
步骤3:排序和筛选
我们利用ORDER BY按下单次数降序排列,并利用LIMIT取出下单次数最多的前三个用户:
- order by
- cnt desc, uid
- limit 3
复制代码
- ORDER BY cnt DESC, uid:按下单次数降序排列,若次数相同则按用户ID升序排列。
- LIMIT 3:取出下单次数最多的前三个用户。
完备代码
- select uid, count(*) as cntfrom user_client_logwhere
- step = 'order'
- group by uidorder by
- cnt desc, uid
- limit 3
- ;
复制代码 题目链接
最近做了京东的24年春招题,题目如下:
题目分析
在这道题目中,我们需要从两个表中提取数据:orders 和 customers。以下是每个表的结构及字段的汉语意思:
- orders(订单表)
- order_id:订单ID
- customer_id:客户ID
- total_amount:订单总金额
- customers(客户表)
目标:计算每个城市的订单总金额。
输出要求:输出每个城市的名称及其订单总金额,按订单总金额降序排列,如果总金额相同则按城市名称升序排列。
知识点关键词:SQL毗连、聚合函数、分组、排序
解答步骤
- 毗连表
我们需要将 orders 表和 customers 表毗连在一起,以便获取每个订单的城市信息。利用 JOIN 语句通过 customer_id 字段毗连两个表。
- from orders o
- join customers c on c.customer_id = o.customer_id
复制代码 - 计算城市订单总金额
利用 SUM 函数计算每个城市的订单总金额。通过 GROUP BY 语句按城市分组,以便对每个城市的订单金额举行求和。
- select c.city,
- sum(o.total_amount) as total_order_amount
- group by c.city
复制代码 - 排序
利用 ORDER BY 语句按订单总金额降序排列效果,如果总金额相同则按城市名称升序排列。
- order by total_order_amount desc, c.city asc
复制代码 完备代码
- select c.city,sum(o.total_amount) as total_order_amountfrom orders o
- join customers c on c.customer_id = o.customer_id
- group by c.cityorder by total_order_amount desc, c.city asc
复制代码 近似题目练习推荐
获取指定客户每月的消费额
统计所有课程参加培训人次
返回顾客名称和相关订单号以及每个订单的总价
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |