爱喝奶茶~ 2021-12-15 20:02 采纳率: 50%
浏览 34
已结题

sql怎么求出每个时间段在线的人数。

数据库中的表
id name login logout
1 小红 2021-12-01 08:30:20 2021-12-01 10:10:20
1 小黄 2021-12-01 09:30:20 2021-12-01 12:10:20
1 小绿 2021-12-01 10:30:20 2021-12-01 18:10:20

想要看一天每个时间在线的人数
例如 8点 多少人
9点 多少人
10点 多少人

  • 写回答

3条回答 默认 最新

  • DarkAthena ORACLE应用及数据库设计方案咨询师 2021-12-15 20:41
    关注

    这个呀,直观上来看,是如何让一行记录变多行的问题,
    比如第一行的小红,应该是8点、9点、10点各一条记录,这样才能根据时间进行分组,然后count。
    我先假定你这个表没有跨日记录的,where条件限制在了某一天,然后login和logout没有空值,
    然后假定8点30是算在8点的,
    那么其实有可能会出现一种情况,某个时间点没有人在线,为了保证数据连续性,所以得提前构造一个从0到23的一列数据(暂命名为h)作为一张表(暂命名为t),用来外关联你这张表
    接下来就是对你的原始表,把小时截取出来, 得到 登入小时、登出小时, 然后这两个数据的关联条件为 t.h between 登入小时 and 登出小时。
    这样,你就可以把一条记录按小时分解成了多条记录,最后再按t.h进行group by ,count行数即可

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 7月28日
  • 已采纳回答 7月20日
  • 创建了问题 12月15日

悬赏问题

  • ¥15 表达式必须是可修改的左值
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题