(非会员进不去,看的其他博主的题目)

问题:

写一个 SQL 查询, 找到活跃用户的 id 和 name.

活跃用户是指那些至少连续 5 天登录账户的用户.

返回的结果表按照 id 排序.

 解题思路:

①使用窗口函数lead()取出以id分组,再按login_date升序排序的当前行之后的四行数据。

1 select id,login_date,lead(login_date,4) over(partition by id order by login_date) as date1
2 from logins;

②再用datediff()函数统计出两个日期的相差天数

 1 SELECT
2 id,
3 login_date,
4 datediff(
5 lead(login_date, 4 ) over(PARTITION BY id ORDER BY login_date)
6 ,login_date
7 ) AS count
8 FROM
9 logins
10 GROUP BY id,login_date;

③在筛选出相差4天(连续五天)的id和name,需要去重

 1 select distinct t.id,a.name
2 from (
3 select
4 id,
5 login_date,
6 datediff(
7 lead(login_date, 4 ) over(partition by id order by login_date)
8 ,login_date
9 ) as count
10 from logins
11 group by id,login_date
12 ) as t
13 left join accounts a
14 on t.id = a.id
15 where t.count = 4;

小知识:

①lag/lead(col,n,DEFAULT) 用于统计窗口内当前行往前或者往后第n行值【lag 取得是当前行之前的数据,lead 取的实当前行之后的数据】

  • 第一个参数为列名,
  • 第二个参数为往后/前第n行(可选,默认为1),
  • 第三个参数为默认值(当往上第n行为NULL时候,取默认值,如不指定,则为NULL)

②DATEDIFF(datepart,startdate,enddate):返回两个指定日期之间指定日期部分差的整数。日期范围从开始日期开始,到结束日期结束。(如果enddate早于startdate,datediff 将返回一个负整数值。)

③(本题没有用)using关键字

  • using可以代替on出现(比on更好)
  • using是针对同名字段(using(id)===on A.id=B.id)

力扣1454(MySQL)-活跃用户(中等)的更多相关文章

  1. 力扣1689. 十-二进制数的最少数目-C语言实现-中等难度题

    题目 传送门 如果一个十进制数字不含任何前导零,且每一位上的数字不是 0 就是 1 ,那么该数字就是一个 十-二进制数 .例如,101 和 1100 都是 十-二进制数,而 112 和 3001 不是 ...

  2. 力扣1438. 绝对差不超过限制的最长连续子数组-C语言实现-中等难度

    题目 传送门 文本 给你一个整数数组 nums ,和一个表示限制的整数 limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit . 如果不存在满足条 ...

  3. 力扣1052. 爱生气的书店老板-C语言实现-中等难度

    题目 传送门 文本 今天,书店老板有一家店打算试营业 customers.length 分钟.每分钟都有一些顾客(customers[i])会进入书店,所有这些顾客都会在那一分钟结束后离开. 在某些时 ...

  4. MySql实例关于ifnull,count,case when,group by(转力扣简单)

    给定表 customer ,里面保存了所有客户信息和他们的推荐人. id   | name | referee_id|+------+------+-----------+|    1 | Will ...

  5. 通向高可扩展性之路(推特篇) ---- 一个推特用来支撑1亿5千万活跃用户、30万QPS、22MB每秒Firehose、以及5秒内推送信息的架构

    原文链接:http://highscalability.com/blog/2013/7/8/the-architecture-twitter-uses-to-deal-with-150m-active ...

  6. 支撑5亿用户、1.5亿活跃用户的Twitter最新架构详解及相关实现

    如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 摘要:Twitter出道之初只是个奋斗在RoR上的小站点,而如今已拥有1.5亿的活跃 ...

  7. JS数据结构第六篇 --- 二叉树力扣练习题

    1.第226题:翻转二叉树 递归+迭代两种实现方式: /** 反转二叉树 * Definition for a binary tree node. * function TreeNode(val) { ...

  8. C++双指针滑动和利用Vector实现无重复字符的最长子串—力扣算法

    题目: 力扣原题链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/ 给定一个字符串, ...

  9. 力扣---1148. 文章浏览 I

    Views 表:+---------------+---------+| Column Name   | Type    |+---------------+---------+| article_i ...

  10. 力扣---511. 游戏玩法分析 I

    活动表 Activity: +--------------+---------+| Column Name  | Type    |+--------------+---------+| player ...

随机推荐

  1. Centos安装常见软件

    一.vscode sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc sudo sh -c 'echo -e &qu ...

  2. AOSP下载且编译

    一.简介 AOSP:Android Open Source Project 二.环境要求 我们可以先了解官网(https://source.android.com/docs/setup/start/r ...

  3. 关于全景(360)图片拼接的方法(Opencv3.0 Stitcher)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  4. 智慧党建3D可视化方案,扩大党建文化宣传数字网络影响力

    信息技术的快速发展加快了社会分化解构,重构了人际传播渠道.随着党员中网民."数字原住民"比重持续攀升,党员工作生活信息化.网络化.数据化持续加深,传统的党建方式对党员,特别是年轻一 ...

  5. 三维模型3DTile格式轻量化在三维展示效果上的重要性分析

    三维模型3DTile格式轻量化在三维展示效果上的重要性分析 三维模型3DTile格式轻量化在三维展示效果上扮演着至关重要的角色.随着计算机图形学和虚拟现实技术的不断发展,我们已经可以创建和渲染非常精细 ...

  6. Windows中控制台(cmd)模式下运行程序卡死/挂起现象解决方案(快速编辑模式)

    最近在运行编译好的exe文件时,发现了一个现象,就是通过cmd运行exe文件或者双击执行运行exe文件,偶尔会出现程序没有执行的情况.最开始发现这个现象时,还以为是程序出现了什么Bug.后面经过网上查 ...

  7. dynatrace统计sql执行时间要考虑网络延时

    对一个系统的功能环境做压测,响应时间特别慢,开发环境却很快. 原因是,开发的应用服务器在北方,功能的应用服务器在南方,数据库服务器共用一个,在北方. 北方的应用调北方的数据库,响应时间2s,互相pin ...

  8. Python机器学习笔记:CART算法实战

    完整代码及其数据,请移步小编的GitHub 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/MachineLearningNote 前言 在python机 ...

  9. KingbaseES中查询对象大小的SQL及函数区别

    --查看所有数据库大小 select sys_database.datname, sys_size_pretty(sys_database_size(sys_database.datname)) AS ...

  10. Linux I/O函数

    pipe函数 pipe函数可用于创建一个管道,以实现进程间通信. #include<unistd.h> /* Create a one-way communication channel ...