首页 > 数据库 >力扣1107(MySQL)-每日新用户统计(中等)

力扣1107(MySQL)-每日新用户统计(中等)

时间:2023-04-11 13:44:49浏览次数:37  
标签:01 06 21 力扣 1107 2019 MySQL logout login

题目:

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;

 

标签:01,06,21,力扣,1107,2019,MySQL,logout,login
From: https://www.cnblogs.com/liu-myu/p/17305939.html

相关文章

  • 力扣 121. 买卖股票的最佳时机 122. 买卖股票的最佳时机 II
    121.买卖股票的最佳时机给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获......
  • R语言-连接MySQL数据库方法
    #2R语言-连接MySQL数据库方法#####2.1方法1:使用R数据库接口连接数据库#####使用RMySQL包install.packages('RMySQL')library(RMySQL)#有两种方式操作#2.1.1使用dbConnect####conn<-dbConnect(MySQL(),dbname="smartbi_data",        ......
  • 力扣1098(MySQL)-小众书籍(中等)
    题目:书籍表Books: book_id是这个表的主键订单表Orders:order_id是这个表的主键。book_id是Books表的外键。问题你需要写一段SQL命令,筛选出过去一年中订单总量少于10本的书籍。注意:不考虑上架(availablefrom)距今不满一个月的书籍。并且假设今天是2019-06-......
  • MySQL 5.6.39 修改 root 密码不生效
    记一次MySQL 修改 root 密码不生效的问题,修改密码后新密码不生效,依旧只能使用旧密码登录,改了个寂寞。一、版本MySQL5.6.39二、问题使用 update 命令修改密码:updateusersetpassword=password('新密码')whereuser='root'andhost='%';刷新权限:flushprivilege......
  • MySQL主从复制原理剖析与应用实践
    vivo互联网服务器团队-ShangYongxingMySQLReplication(主从复制)是指数据变化可以从一个MySQLServer被复制到另一个或多个MySQLServer上,通过复制的功能,可以在单点服务的基础上扩充数据库的高可用性、可扩展性等。一、背景MySQL在生产环境中被广泛地应用,大量的应用和服务......
  • MySql8.0修改root密码
    MySQL5.7 的版本,因为在user表中没有password字段,一直使用下边的方式来修改root密码usemysql;updateusersetauthentication_string=password('root') whereuser='root'现在要用MySQL8.0.11版本,装好MySQL后用上边方法修改密码,一直报错。后来去掉password()函数后,没有报......
  • MySQL函数
    HEX[[email protected]][test]>select16,HEX(16);+----+---------+|16|HEX(16)|+----+---------+|16|10|+----+---------+1rowinset(0.00sec) CAST[[email protected]][test]>createtabletest_col_sort(userchar(10),typeenum(�......
  • 使用Mysql实现消息队列
    实现起来就是消息带状态和版本号字段。更新时用版本号做乐观锁。操作逻辑就是个状态机。UPDATEmqSETmq.status=new_statusmq.version=mq.version+1WHEREmq.version=old_version实现mysqlmq表结构设计CREATETABLE`mq`(`id`bigint(20)unsigned......
  • mysql数据库的登录脚本
    ######################## ku脚本:可以使用以下ku脚本,它可以根据提供的参数登录到MySQL数据库:#!/bin/bash#Checkforcorrectnumberofargumentsif[$#-lt1];thenecho"Usage:$0<ip>[<port>][<mysqloptions>]"exit1fi#SettheIPaddress......
  • 力扣 674. 最长连续递增序列
    674.最长连续递增序列给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。连续递增的子序列 可以由两个下标 l 和 r(l<r)确定,如果对于每个 l<=i<r,都有 nums[i]<nums[i+1] ,那么子序列 [nums[l],nums[l+1],...,nums[r-1],......