news 2026/8/9 15:34:21

力扣1435-制作会话柱状图

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
力扣1435-制作会话柱状图

表:Sessions

+---------------------+---------+ | Column Name | Type | +---------------------+---------+ | session_id | int | | duration | int | +---------------------+---------+ session_id 是该表主键 duration 是用户访问应用的时间, 以秒为单位

你想知道用户在你的 app 上的访问时长情况。因此你决定统计访问时长区间分别为"[0-5>""[5-10>""[10-15>""15 minutes or more"的会话数量,并以此绘制柱状图。

写一个解决方案来报告(bin, total)

返回结果无顺序要求

结果格式如下所示。

示例 1:

输入:Sessions 表: +-------------+---------------+ | session_id | duration | +-------------+---------------+ | 1 | 30 | | 2 | 199 | | 3 | 299 | | 4 | 580 | | 5 | 1000 | +-------------+---------------+输出:+--------------+--------------+ | bin | total | +--------------+--------------+ | [0-5> | 3 | | [5-10> | 1 | | [10-15> | 0 | | 15 or more | 1 | +--------------+--------------+解释:对于 session_id 1,2 和 3 ,它们的访问时间大于等于 0 分钟且小于 5 分钟。 对于 session_id 4,它的访问时间大于等于 5 分钟且小于 10 分钟。 没有会话的访问时间大于等于 10 分钟且小于 15 分钟。 对于 session_id 5, 它的访问时间大于等于 15 分钟。

解法思路:

1. 单位换算

首先,题目给出的 duration 是秒,但区间是分钟。为了计算方便且避免除法带来的精度问题,我们先把分钟换算成秒:

  • 0-5 分钟:[0, 300) 秒

  • 5-10 分钟:[300, 600) 秒

  • 10-15 分钟:[600, 900) 秒

  • 15 分钟以上:>= 900 秒

2. 核心难点:零值保留

题目的潜台词是:即使某个区间没有数据,也必须显示该区间,且数量为 0。
如果使用常规的 GROUP BY + CASE WHEN,一旦某个区间没数据,那个区间直接就不会出现在结果里(行丢失),导致答案错误。

3. 策略选择:分而治之 (Divide and Conquer)

既然只有 4 个固定的类别,我们可以把这个问题拆解成 4 个独立的小问题:

  • Q1: 统计 [0, 300) 的数量(如果没有就是 0)

  • Q2: 统计 [300, 600) 的数量

  • ...
    最后用胶水 (UNION ALL) 把它们粘在一起。

代码:

SELECT '[0-5>' AS bin, COUNT(*) AS total sql FROM Sessions WHERE duration >= 0 AND duration < 300 UNION ALL SELECT '[5-10>' AS bin, COUNT(*) AS total FROM Sessions WHERE duration >= 300 AND duration < 600 UNION ALL SELECT '[10-15>' AS bin, COUNT(*) AS total FROM Sessions WHERE duration >= 600 AND duration < 900 UNION ALL SELECT '15 or more' AS bin, COUNT(*) AS total FROM Sessions WHERE duration >= 900;

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/27 21:15:03

【无人机追踪】基于Dubin和候选集的无人机UAV集群协同攻击目标的Matlab仿真程序,围绕无人机的目标搜索、冲突避免、联盟组建和任务执行展开考虑能和

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1f34…

作者头像 李华
网站建设 2026/7/28 6:56:36

php+uniapp平台的校园生活服务交流论坛系统(二手,失物招领 -跑腿) 小程序

目录校园生活服务交流论坛系统摘要开发技术核心代码参考示例1.建立用户稀疏矩阵&#xff0c;用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度总结源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;校园生活服务交流论坛…

作者头像 李华
网站建设 2026/8/6 4:58:12

为什么 Elasticsearch 搜索这么快?深入理解倒排索引与分词器原理

Elasticsearch 之所以能在大数据量下实现毫秒级的全文搜索&#xff0c;其核心秘密就在于它的底层数据结构——倒排索引&#xff08;Inverted Index&#xff09;。 如果你想精通 Elasticsearch&#xff0c;或者只是想在面试中对答如流&#xff0c;理解倒排索引和分词器&#xff…

作者头像 李华
网站建设 2026/8/9 0:05:16

15.设计模式-组合模式

组合模式&#xff1a;将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 组合模式的两种实现&#xff1a; 透明方式&#xff1a;在Component中声明所有用来管理子对象的方法&#xff0c;其中包括Add、Remove等。这样…

作者头像 李华
网站建设 2026/8/7 9:50:49

Nodejs+vue大学生二手闲置物品置换交易管理系统

文章目录摘要--nodejs技术栈--结论源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;摘要 该系统基于Node.js与Vue.js构建&#xff0c;旨在为大学生提供一个高效、安全的二手闲置物品交易平台。通过前后端分离架构&#xff0c;系统实现了…

作者头像 李华
网站建设 2026/8/9 4:25:52

Nodejs+vue大学生兼职应聘评分管理系统h4bmt

文章目录系统概述核心功能模块技术实现亮点应用价值--nodejs技术栈--结论源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;系统概述 Node.jsVue大学生兼职应聘评分管理系统&#xff08;H4BMT&#xff09;是一款基于前后端分离架构的Web应…

作者头像 李华