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

利用sql语句来统计用户登录数据的实践

目录

  • 1 基本数据情况
  • 2 统计每个用户每个月登录次数
  • 3 将日期按月显示在列上
  • 4 总结

1 基本数据情况

当需要对用户登录情况进行统计时,SQL是一个非常强大的工具。通过SQL,可以轻松地从数据库中提取和汇总数据,并以适合分析和报告的方式进行呈现。

在这个示例中,我们有一个名为t_login的表,包含了用户登录的记录。字段有id,user,logintime,department,其中logintime是datetime格式,包括了年月日时分秒信息。具体数据如下表。

id用户时间部门
1黑熊怪2021-08-05 17:20:00行政部
2黑熊怪2021-09-22 17:26:00行政部
3黑熊怪2021-09-26 09:55:00行政部
4黑熊怪2021-09-26 10:08:00行政部
5黑熊怪2022-04-13 15:01:00行政部
6唐僧2022-10-24 13:45:00开发部
7唐僧2022-10-24 15:07:00开发部
8唐僧2022-10-26 10:44:00开发部
9唐僧2022-11-07 14:28:00开发部
10唐僧2023-02-24 08:43:00开发部
11唐僧2023-03-07 10:14:00开发部
12悟空2022-12-26 10:33:00开发部
13八戒2022-10-25 11:16:00开发部
14八戒2022-11-13 08:54:00开发部
15白骨精2021-11-22 14:47:00开发部
16沙僧2021-08-18 14:44:00市场部
17沙僧2022-05-07 09:12:00市场部
18沙僧2022-05-11 10:41:00市场部
19沙僧2022-05-11 14:27:00市场部
20白龙马2023-07-12 09:39:00财务部
21白龙马2023-07-13 10:59:00财务部
22白龙马2023-07-19 15:04:00财务部

针对此数据,我们有两种不同的需求:首先是统计每个用户每个月登录的次数,其次是将登录日期按月显示在列上。

2 统计每个用户每个月登录次数

针对这个需求,我们可以按照以下步骤来实现:

  1. 使用GROUP BY语句将数据按照部门、用户、年份和月份进行分组。
  2. 使用COUNT函数统计每个组合中的登录次数。
  3. 最后,按照部门、用户、年份和月份的顺序进行排序。
SELECT
    department,
    `user`,
    DATE_FORMAT(logintime, '%Y-%m') AS `year_month`,
    COUNT(*) AS count
FROM
    t_login
GROUP BY
    department,
    `user`,
    `year_month`
ORDER BY
    department,
    `user`,
    `year_month`;

查询结果展示
在这里插入图片描述

3 将日期按月显示在列上

对于第二个需求,我们可以通过将日期作为列名,统计每个用户在每个月的登录次数。这里的查询需要固定年份和月份,并将其转换为列名。

SELECT
    department,
    `user`,
    SUM(CASE WHEN YEAR(logintime) = 2021 AND MONTH(logintime) = 8 THEN 1 ELSE 0 END) AS '2021_8',
    SUM(CASE WHEN YEAR(logintime) = 2021 AND MONTH(logintime) = 9 THEN 1 ELSE 0 END) AS '2021_9',
    -- ...类似的逻辑,补充更多的年份和月份
    SUM(CASE WHEN YEAR(logintime) = 2023 AND MONTH(logintime) = 7 THEN 1 ELSE 0 END) AS '2023_7'
FROM
    t_login
WHERE
    (logintime >= '2021-08-01' AND logintime < '2023-12-01')
GROUP BY
    department,
    `user`
ORDER BY
    department,
    `user`;

查询结果如下

在这里插入图片描述

这两个示例SQL语句提供了满足两种需求的查询方法,并且可以用于导出数据并进一步分析或生成报告。

4 总结

本博客简要描述问题,说明针对用户登录情况的统计需求。 解释如何使用GROUP BYCOUNT函数统计每个用户每个月的登录次数,并提供相应的SQL语句。说明如何将日期按月显示在列上,展示每个用户在每个月的登录情况,并给出相应的SQL查询语句。结果展示和导出数据。提供示例查询结果,说明如何将数据导出到Excel或其他工具中进行分析。总结SQL的强大之处,指出其在数据统计和分析中的应用,并展望如何进一步优化和扩展这些查询以适应更多的需求场景。通过这样的博客结构,读者可以了解到在实际场景中使用SQL进行数据统计和分析的方法,并且能够根据不同需求调整查询,满足自身的数据处理要求。


http://www.kler.cn/news/149361.html

相关文章:

  • Pytorch:torch.utils.data.DataLoader()
  • 系列五、Spring整合MyBatis不忽略mapper接口同目录的xxxMapper.xml
  • 搜索引擎语法
  • Alibaba Java诊断工具Arthas查看Dubbo动态代理类
  • 【古月居《ros入门21讲》学习笔记】14_参数的使用与编程方法
  • 你知道显卡型号上的数字是什么意思吗?数字越大就越好吗?
  • 34.基于webpack搭建开发环境
  • ground truth 在深度学习任务中代表的是什么意思?
  • 第二证券:机构密集调研消费电子、半导体产业链
  • 三大录屏软件推荐,让你轻松录制屏幕
  • Vue实现纯前端导入excel数据
  • FFmpeg介绍
  • PHPStudy开发环境解决:启动报错 class websocket/server not found
  • 【问题系列】消费者与MQ连接断开问题解决方案(二)
  • Python的哈希映射:字典
  • API网关
  • Java中的mysql——面试题+答案——第24期
  • 苹果提醒事项怎么用?几个简单步骤就能学会!
  • Hadoop集群升级(3.1.3 -> 3.2.4)
  • 图表控件LightningChart .NET中文教程 - 如何创建WPF 2D热图?(二)
  • C#中的async/await异步编程模型
  • 使用git下载远程所有分支到本地
  • SpringBoot+网易邮箱登录注册
  • Rabbitmq发送邮件并消费邮件
  • Node.js下载安装教程
  • 开放式耳机性价比排行榜、开放式耳机性价比排行榜前十
  • 数据库常见的数据模型
  • 初识《树》
  • 如何运行C/C++程序
  • Mysql单表查询练习