利用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`;

查询结果展示
利用sql语句来统计用户登录数据的实践_第1张图片

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语句来统计用户登录数据的实践_第2张图片

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

4 总结

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

你可能感兴趣的:(sql,数据库,java)