利用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进行数据统计和分析的方法,并且能够根据不同需求调整查询,满足自身的数据处理要求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/199513.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring代理方式之静态、动态代理(JDK和CGlib动态代理)

目录 1、代理设计模式的概念 2、静态代理 3、动态代理&#xff08;JDK和CGlib动态代理&#xff09; 1. JDK动态代理是基于接口的代理&#xff08;Interface-based proxy&#xff09; 2. CGLIB代理是基于类的代理&#xff08;Class-based proxy&#xff09; ⭐比较&#x…

embeddings

“embeddings”的中文翻译是“嵌入”或“嵌入向量”。在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;通常被称为“词向量”或“词嵌入”&#xff0c;它是表示词汇或令牌的一种方式&#xff0c;通过将这些词汇或令牌映射到一个向量空间中的点&#xff0c;以捕捉它们…

Gin投票系统(2)

投票系统 数据库的建立 先分析需求&#xff0c;在sql中建立数据库&#xff0c;关于项目数据库如何建立可以在“goweb项目创建流程分析中看如何去建表” 成功后目前有四个表&#xff1a; vote&#xff0c;user&#xff0c;vote_opt,vote_opt_user 建立数据库&#xff0c;可以…

Web学习笔记

Web学习笔记 flask库前端基础超链接&#xff1a;空连接&#xff1a;图片&#xff1a;视频&#xff08;音频&#xff09;&#xff1a;嵌套使用列表表格格式化表格input表单系列 网络请求GET方式POST请求通过GET方式获取输入参数通过POST方式获取输入参数注册页面 CSS三种使用方式…

超卓航科聚国内外专家学者,共推冷喷涂技术的发展与应用

11月24日——26日&#xff0c;冷喷涂技术及其在增材制造中的应用专题会在襄阳召开&#xff0c;来自国内外200多名科技工作者齐聚一堂&#xff0c;共同交流冷喷涂技术的研究与应用。 本次专题研讨会由中国机械工程学会表面工程分会主办&#xff0c;湖北超卓航空科技股份有限公司…

C语言第三十六弹--实现转移表的多种方法

使用C语言通过多种方法实现转移表 方法一、普通法 思路&#xff1a;如图实现多种操作&#xff0c;首先创建菜单&#xff0c;需要运行一次再判断条件&#xff0c;所以通过do{}while(); 循环来实现多次。有多种选择&#xff0c;使用switch case选择语句&#xff0c;再在对应case…

Spark---SparkCore(五)

五、Spark Shuffle文件寻址 1、Shuffle文件寻址 1&#xff09;、MapOutputTracker MapOutputTracker是Spark架构中的一个模块&#xff0c;是一个主从架构。管理磁盘小文件的地址。 MapOutputTrackerMaster是主对象&#xff0c;存在于Driver中。MapOutputTrackerWorker是从对…

Leetcode—2336.无限集中的最小数字【中等】

2023每日刷题&#xff08;四十四&#xff09; Leetcode—2336.无限集中的最小数字 实现代码 class SmallestInfiniteSet {set<int> s; public:SmallestInfiniteSet() {for(int i 1; i < 1000; i) {s.insert(i);}}int popSmallest() {int res *s.begin();s.erase(s…

【区块链】产品经理的NFT初探

常见的FT如比特币&#xff08;BTC&#xff09;&#xff0c;以太币&#xff08;ETH&#xff09;等&#xff0c;两个代币之间是完全可替换的。而NFT具有唯一性&#xff0c;不可以互相替换。本文作者对NET的发展现状、相关协议、应用场景等方面进行了分析&#xff0c;一起来看一下…

深度解读:为什么要做数据合规?如何做到数据合规?

数据资源“入表”在即&#xff0c;企业更需筑牢数据合规防线。但企业主企业购买数据、获取数据到底是否合法合规&#xff0c;入表如何防范合规风险&#xff1f;上周三&#xff0c;亿信华辰邀请到北京鑫诺律师事务所高级合伙人、管委会副主任武婕将和大家分享《数据入表法律合规…

ReactDomServer 将react组件转化成html静态标签(SSR服务器渲染)

前言&#xff1a; 因为使用图表里面的formatter函数需要原生的html标签&#xff0c;但是本身技术栈是react&#xff0c;所以为了方便&#xff0c;便使用了ReactDomServer api将react组件转化成html原生标签引入&#xff1a; import ReactDomServer from react-dom/server; 使…

Debian10安装VMware Tools

一、原系统 首先我在界面按CTRLALTT和CTRLSiftT都没有反应&#xff0c;没关系&#xff0c;我有办法 系统版本 管理员用户 步骤一&#xff1a;打开VMware Tools文件 步骤二、将文件复制到自己熟悉的文件内 步骤三、命令行查看文件是否复制成功存在 步骤四、解压VMware-tools…

MIT线性代数笔记-第17讲-正交矩阵,Schmidt正交化

目录 17.正交矩阵&#xff0c; S c h m i d t Schmidt Schmidt正交化打赏 17.正交矩阵&#xff0c; S c h m i d t Schmidt Schmidt正交化 “标准”经常表示单位长度 标准正交基&#xff1a;由两两正交的单位向量组成的基 将标准正交基中的元素记作 q ⃗ 1 , q ⃗ 2 , ⋯ , q …

Redis学习文档

目录 一、概念1、特征2、关系型数据库和非关系型数据库的区别3、键的结构4、Redis的Java客户端5、缓存更新策略5.1、概念5.2、代码 6、缓存穿透6.1、含义6.2、解决办法6.3、缓存空值代码举例6.4、布隆过滤器代码举例 7、缓存击穿7.1、概念7.2、解决办法7.3、互斥锁代码举例7.4、…

DBT踩坑第二弹

总结下dbt-spark踩到的坑&#xff0c;连接方式采用的是thrift连接 Kerberos认证。考虑到开源组件Kyuubi也是基于Hiveserver2&#xff0c;使用的thrift协议&#xff0c;所以采用Kyuubi执行SparkSQL。 官方文档给出的Thrift方式连接示例真的是简单&#xff0c;但是真是用起来真是…

vue3 + element-plus + ts el-table封装

vue3 element-plus ts el-table封装 博客参考https://blog.csdn.net/weixin_45291937/article/details/125523244 1. 文件位置&#xff08;根据自己的需求&#xff09; 2. 在 custom 文件夹下面 创建 mytable 文件夹 3. 直接上代码 // index.vue<template><div …

西工大网络空间安全学院计算机系统基础实验一(123)

在实验零中&#xff0c;我们拿到了lab1-handout.zip压缩文件&#xff0c;接着&#xff0c;我们使用unzip ./lab1-handout.zip命令&#xff0c;解压缩该压缩文件。解压缩成功后&#xff0c;使用"ls"命令查看当前工作目录下的文件和文件夹&#xff0c;发现得到了"…

Day41 使用listwidget制作简易图片播放器

1.简介 使用QlistWidget实现简易图片播放器&#xff0c;可以打开一个图片序列&#xff0c;通过item的单击事件实现图片的切换&#xff0c;通过设置list的各种属性实现图片预览的显示&#xff0c;美化滚动条即可实现一个简易图片播放器。 2.效果 3.实现步骤&#xff1a; 1.初始…

如何使用 Python(NumPy 和 OpenCV)对图像进行 Funkify

如何使用 Python&#xff08;NumPy 和 OpenCV&#xff09;对图像进行 Funkify 作者|Luke Tambakis 编译|Flin 来源|medium 在这篇博客中&#xff0c;我将解释如何制作一个 Python 脚本来使用 Python 代码“funkify”图像。该程序速度足够快&#xff0c;甚至可以处理实时视频&am…

【Java Spring】Spring MVC基础

文章目录 1、Spring MVC 简介2、Spring MVC 功能1.1 Spring MVC 连接功能2.2 Spring MVC 获取参数2.2.1 获取变量2.2.2 获取对象2.2.3 RequestParam重命名后端参数2.2.4 RequestBody 接收Json对象2.2.5 PathVariable从URL中获取参数 1、Spring MVC 简介 Spring Web MVC是构建于…