当前位置: 首页 > news >正文

力扣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;

http://www.jsqmd.com/news/230827/

相关文章:

  • 吐血推荐!9大AI论文网站测评:研究生科研写作全攻略
  • 服装公司软件ERP是什么?关键功能与行业应用有哪些?
  • Bound Service Account Token Improvements
  • AI Agent在企业数据质量管理与治理自动化中的应用
  • 函数指针 + 结构体 = C 语言的“对象模型”?——从 C 到 C++ / Java 的本质统一
  • 灰狼优化算法(GWO)改进物理信息神经网络(PINN) - 光伏功率预测附Matlab代码
  • 2022蓝帽杯计算机取证
  • k8s 各版本变更记录
  • 1. 2025 年终总结 PPT 愁死人?这 3 款 AI
  • 麻雀算法SSA 差分算法DE GA遗传算法的光伏阵列参数辨识附matlab代码
  • 【数据集】中国杰出青年名单数据集(1994-2024年)
  • 圆度误差的神经网络评定及测量不确定度研究附Matlab代码
  • 数字员工如何通过AI销冠系统与AI提效软件系统推动企业智能化升级
  • 【SCI创新】ASL-QPSO-SVM时序预测算法研究——基于动态非线性收缩扩张因子、正余弦惯性权重与莱维-贪婪融合策略附Matlab代码
  • 数字员工是什么?AI销冠系统与AI提效软件系统的价值在哪里?
  • 【SCI二区IEEE复现】基于混合有限集模型预测控制(FCS-MPC)的模块化多电平换流器(MMC)整流电路仿真模型附Simulink仿真
  • Agent Skills (Claude Skills) 详细攻略,一篇文章精通
  • 基于AHP-EWM正态云模型的初中地理教学评价附Matlab代码
  • 【SCI复现】高比例可再生能源并网如何平衡灵活性与储能成本?虚拟电厂多时间尺度调度及衰减建模附Matlab代码
  • 【无人机追踪】基于Dubin和候选集的无人机UAV集群协同攻击目标的Matlab仿真程序,围绕无人机的目标搜索、冲突避免、联盟组建和任务执行展开考虑能和
  • 学长亲荐9个AI论文平台,研究生高效写作必备!
  • 【SCI一区】【电动车】基于ADMM双层凸优化的燃料电池混合动力汽车研究附Matlab代码
  • Claude Code + Codex + Gemini 似乎已经成为高手总结的AI编程最佳实践方案
  • 导师严选2026 AI论文网站TOP9:继续教育写作全攻略
  • 高精度智慧城市建筑物巡检识别 建筑物立面缺陷识别 墙面裂缝检测数据集 表面裂纹图像识别数据集 工程质量巡检图像数据集第10381期
  • 【GA-HIDMSPSO-CNN-SVM】 基于 GA-HIDMSPSO 优化 CNN-SVM 分类研究附Matlab代码
  • php+uniapp平台的校园生活服务交流论坛系统(二手,失物招领 -跑腿) 小程序
  • SpringBoot邮件发送功能模版
  • 【GPS+INS在MAV导航上融合】基于间接卡尔曼滤波的IMU与GPS融合MATLAB仿真(IMU与GPS数据由仿真生成)附Matlab代码
  • php+uniapp食品安全信息检测管理系统 小程序_36kb0