力扣1107(MySQL)-每日新用户统计(中等)
题目:
Traffic 表:

该表没有主键,它可能有重复的行。
activity 列是 ENUM 类型,可能取 (‘login’, ‘logout’, ‘jobs’, ‘groups’, ‘homepage’) 几个值之一。
问题
编写一个 SQL 查询,以查询从今天起最多 90 天内,每个日期该日期首次登录的用户数。假设今天是 2019-06-30.
示例
Traffic 表:

Result 表:

请注意,我们只关心用户数非零的日期.
ID 为 5 的用户第一次登陆于 2019-03-01,因此他不算在 2019-06-21 的的统计内。
建表语句:
1 Create table If Not Exists traffic_1107 (user_id int(3), activity enum('login','logout','jobs','groups','homepage'), activity_date date);
2 Truncate table traffic_1107;
3 insert into traffic_1107 (user_id, activity, activity_date) values (1, 'login', '2019-05-01'),
4 ('1', 'homepage', '2019-05-01'),('1', 'logout', '2019-05-01'),('2', 'login', '2019-06-21'),('2', 'logout', '2019-06-21'),('3', 'login', '2019-01-01'),('3', 'jobs', '2019-01-01'), ('3', 'logout', '2019-01-01'),('4', 'login', '2019-06-21'),('4', 'groups', '2019-06-21'),('4', 'logout', '2019-06-21'),('5', 'login', '2019-03-01'),('5', 'logout', '2019-03-01'),('5', 'login', '2019-06-21'),('5', 'logout', '2019-06-21');
解题思路:
1.先以user_id分组找出所有用户第一次登陆的时间;
2.在第一步结果中筛选出距今90天内的数据;
3.最后使用聚合count()计数;
1 select login_date, count(user_id) as user_count
2 from (
3 select user_id,min(activity_date) as login_date
4 from traffic_1107
5 where activity = 'login'
6 group by user_id
7 )as temp
8 where datediff('2019-06-30', login_date) <= 90
9 group by login_date;

力扣1107(MySQL)-每日新用户统计(中等)的更多相关文章
- Mysql创建新用户后无法登录,提示 Access denied for user 'username'@'localhost' (using password: YES)
MySQL创建新用户后无法登录,提示 Access denied for user 'username'@'localhost' (using password: YES) ,多半是因为存在匿名用户, ...
- MySQL创建新用户、增加账户的2种方法及使用实例
可以用两种方式创建MySQL账户:1.使用GRANT语句2.直接操作MySQL授权表最好的方法是使用GRANT语句,因为这样更精确,错误少.创建超级用户: mysql> GRANT ALL PR ...
- mysql创建新用户及新用户不能本地登陆的问题
最近在搭建hadoop集群,主节点上面安装的MySQL数据库,对着方面不熟悉,为hive.Ooize等服务统一使用的root账号和密码,为了安全一些库对于某些用户是不可见的,所以需要针对不同的服务设置 ...
- mysql创建新用户出现错误处理
心血来潮创建一个新用户,结果...步步艰难啊,好在最后成功,把我出现的问题和解决方案抛出来,希望大家顺顺利利创建成功┗|`O′|┛ 嗷~~ 我出现的错误主要有这三种: 1.ERROR 1064 (42 ...
- MySQL添加新用户、为用户创建数据库、为新用户分配权限
登录MySQL [root@VM_0_2_33_centos /]#mysql -u root -p 添加新用户 允许本地 IP 访问 localhost, 127.0.0.1 mysql>'; ...
- mysql 创建新用户并添加权限
1.添加用户 1.1 添加一个新用户: mysql>grant usage on *.* to " with grant option; 上面这种只支持mysql服务器本地登录. 1. ...
- mysql创建新用户
如果你需要添加 MySQL 用户,你只需要在 mysql 数据库中的 user 表添加新用户即可. 以下为添加用户的的实例,用户名为qi,密码为python,并授权用户可进行SELECT,INSERT ...
- mysql 创建新用户 并赋予权限
1.以管理员身份登录mysql mysql -u root -p 2.选择mysql数据库 use mysql 3.创建用户并设定密码 create user 'testuser'@'localhos ...
- mysql 创建新用户、数据库、授权
创建用户 1.登录mysql mysql -uroot -p 2.创建本地用户(2.3选其一) #use mysql; //选择mysql数据库 #create user 'w ...
- Mysql创建新用户方法
1. CREATE USER 语法: CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 例子: CREATE USER 'dog'@'lo ...
随机推荐
- Mysql范式
什么是范式? "范式(NF)"是"符合某一种级别的关系模式的集合,表示一个关系内部各属性之间的联系的合理化程度".很晦涩吧?实际上你可以把它粗略地理解为一张数据 ...
- 3DCAT为3D应用在云端构筑一个可靠的家
保护知识产权,一直是数字化长期关注的议题,如何保护应用内的数字化资产(文字.图片.音频.视频.模型)等,是当今行业的难题,只要运行在Windows环境的三维应用,都可能面临被破解提取出资产,为原创版权 ...
- Linux快速入门(三)Linux文件管理
Linux文件操作 head head命令用于显示文件的前几行内容,可以通过-num参数展示文件前num行的内容. root@ubuntu:~# ls bb.txt cc.txt snap root@ ...
- Vue中组件和插件有什么区别?
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.组件是什么 回顾以前对组件的定义: 组件就是把图形.非图形的各种逻辑均抽象为一个统一的概念(组件)来实现开发的模式,在Vue中每一个. ...
- uniapp如何给空包进行签名操作
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 首先安装sdk https://www.oracle.com/java/technologies/downloads/ 正常下一步即可~安 ...
- Win10下安装Maven 配置环境变量 设置settings
一.下载.设置环境变量 下载页面:https://maven.apache.org/download.cgi 下载地址:https://mirrors.tuna.tsinghua.edu.cn/apa ...
- Oracle 获取月初、月末时间,获取上一月月初、月末时间
select trunc(sysdate, 'mm'), last_day(trunc(sysdate)), trunc(add_months(trunc(sysdate), -1), 'mm'), ...
- Oracle 触发器迁移至KingbaseES常见的问题
oracle数据库的触发器迁移到KingbaseES的时候经常会出现一下两类错误: 1.SQL 错误 [42809]: 错误: "xxxxxxxx" 是一个视图.Detail: 视 ...
- KingbaseES date 数据类型的两种格式
关于date 数据类型,Oracle 与 PostgreSQL 格式是不同的,Oracle 是 日期 + 时间的类型,而PG 则只有日期.KingbaseES Oracle 模式则同时实现了二者类型, ...
- 如何安装和使用Docker
本文深入解析Docker,一种革命性的容器化技术,从其基本概念.架构和组件,到安装.配置和基本命令操作.文章探讨了Docker在虚拟化.一致性环境搭建及微服务架构中的关键作用,以及其在云计算领域的深远 ...