力扣-查询近30天活跃用户数

news2025/7/28 0:10:01

大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。

文章目录

  • 前言
  • 一、题目:1141. 查询近30天活跃用户数
  • 二、解题
    • 1.正确示范①
      • 提交SQL
      • 运行结果
    • 2.正确示范②
      • 提交SQL
      • 运行结果
    • 3.正确示范③
      • 提交SQL
      • 运行结果
    • 4.其他
  • 总结


前言


一、题目:1141. 查询近30天活跃用户数

活动记录表:Activity

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| user_id       | int     |
| session_id    | int     |
| activity_date | date    |
| activity_type | enum    |
+---------------+---------+
该表是用户在社交网站的活动记录。
该表没有主键,可能包含重复数据。
activity_type 字段为以下四种值 ('open_session', 'end_session', 'scroll_down', 'send_message')。
每个 session_id 只属于一个用户。

请写SQL查询出截至 2019-07-27(包含2019-07-27),近 30 天的每日活跃用户数(当天只要有一条活动记录,即为活跃用户)。

以 任意顺序 返回结果表。

查询结果示例如下。

示例 1:

输入:
Activity table:
+---------+------------+---------------+---------------+
| user_id | session_id | activity_date | activity_type |
+---------+------------+---------------+---------------+
| 1       | 1          | 2019-07-20    | open_session  |
| 1       | 1          | 2019-07-20    | scroll_down   |
| 1       | 1          | 2019-07-20    | end_session   |
| 2       | 4          | 2019-07-20    | open_session  |
| 2       | 4          | 2019-07-21    | send_message  |
| 2       | 4          | 2019-07-21    | end_session   |
| 3       | 2          | 2019-07-21    | open_session  |
| 3       | 2          | 2019-07-21    | send_message  |
| 3       | 2          | 2019-07-21    | end_session   |
| 4       | 3          | 2019-06-25    | open_session  |
| 4       | 3          | 2019-06-25    | end_session   |
+---------+------------+---------------+---------------+
输出:
+------------+--------------+ 
| day        | active_users |
+------------+--------------+ 
| 2019-07-20 | 2            |
| 2019-07-21 | 2            |
+------------+--------------+ 
解释:注意非活跃用户的记录不需要展示。

二、解题

1.正确示范①

提交SQL

select activity_date day,count(distinct user_id) active_users
from Activity
where activity_date>'2019-06-27' and activity_date<='2019-07-27'
# activity_date>='2019-06-28' and activity_date<='2019-07-27'
group by activity_date

或者

select activity_date day,count(distinct user_id) active_users
from Activity
where activity_date>DATE_SUB('2019-07-27',INTERVAL 30 DAY)
and activity_date<='2019-07-27'
group by activity_date

或者

select activity_date day,count(distinct user_id) active_users
from Activity
where DATEDIFF('2019-07-27',activity_date)>=0 
and DATEDIFF('2019-07-27',activity_date) <30 
group by activity_date

运行结果

2.正确示范②

提交SQL

select activity_date day,count(distinct user_id) active_users
from Activity
where activity_date between '2019-06-28' and '2019-07-27'
# activity_date between DATE_SUB('2019-07-27',INTERVAL 29 DAY) and '2019-07-27'
group by activity_date

运行结果

3.正确示范③

提交SQL

select activity_date day,count(1) active_users
from(
select distinct activity_date,user_id
from Activity
where activity_date between '2019-06-28' and '2019-07-27'
) u
group by activity_date

运行结果

4.其他


总结

正确示范①思路:
先按活跃日期筛选
activity_date>‘2019-06-27’ and activity_date<=‘2019-07-27’
或者 activity_date>DATE_SUB(‘2019-07-27’,INTERVAL 30 DAY) and activity_date<=‘2019-07-27’
或者 DATEDIFF(‘2019-07-27’,activity_date)>=0 and DATEDIFF(‘2019-07-27’,activity_date) <30
再按活跃日期分组 group by activity_date
再取去重用户数 count(distinct user_id)
正确示范②思路:
将正确示范①中活跃日期筛选改为
activity_date between ‘2019-06-28’ and ‘2019-07-27’ ,其他不变;
正确示范③思路:
先按活跃日期筛选,将数据按distinct activity_date,user_id去重后,
再按活跃日期分组 group by activity_date
再取用户数 count(1)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

switch自定义样式

效果图&#xff1a; 圆点thumb &#xff08;selector_switch_thumb&#xff09; <?xml version"1.0" encoding"utf-8"?> <selector xmlns:android"http://schemas.android.com/apk/res/android"><!--switch按钮圆thumb的样式-…

ChatGPT爆火:AI崛起,这些职场人的机遇到了?

ChatGPT最近真的被全球吃瓜群众玩坏了&#xff01; 回答情感问题&#xff0c;编写代码&#xff0c;撰写slogan或脚本&#xff0c;甚至还被用于毕业生论文…… 这个连马斯克都由衷地称赞的ChatGPT&#xff0c;是一种全新的聊天机器人模型。上线2个月&#xff0c;就拥有了上亿活…

从零开始的机械臂yolov5抓取gazebo仿真(环境搭建篇上)

ubuntu18.04双系统以及ROS-melodic&moveit!安装 ubuntu18.04双系统安装 既然要用ubuntu来跑深度学习了&#xff0c;那肯定是要摒弃双系统的&#xff0c;虚拟机是真的带不动。 安装教程网上有很多&#xff0c;这里贴一个我参考的安装教程&#xff0c;和镜像下载地址&…

深度学习笔记:误差反向传播(2)

反向传播上一章内容可见http://t.csdn.cn/SHW3m 1 激活函数的反向传播 ReLU ReLU函数在x > 0的时候返回x&#xff0c;在X < 0的时候返回0。对该函数求导可得∂y/∂x 在x > 0时为1&#xff0c;在x < 0时为0 class Relu:def __init__(self):self.mask Nonedef …

【架构师】零基础到精通——架构演进

博客昵称&#xff1a;架构师Cool 最喜欢的座右铭&#xff1a;一以贯之的努力&#xff0c;不得懈怠的人生。 作者简介&#xff1a;一名Coder&#xff0c;软件设计师/鸿蒙高级工程师认证&#xff0c;在备战高级架构师/系统分析师&#xff0c;欢迎关注小弟&#xff01; 博主小留言…

Pycharm远程连接服务器配置常见问题

说明&#xff1a;配置过程中两个地方容易出错&#xff01;&#xff01;&#xff01; pycharm远程连接服务器完整教程_hehedadaq的博客-CSDN博客_pycharm远程 可参考该网址&#xff0c;但是在该过程中注意&#xff1a; 其他功能&#xff1a; 打开服务器的terminal(可开多个)&…

Spring源码分析:创建 BeanDefinition 流程

一、前期准备1.1 环境依赖<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.1.7.RELEASE</version></dependency><dependency><groupId&…

CentOs8 安装Jenkins一系列问题总结

CentOs8 安装 Jenkins 总结 文章目录CentOs8 安装 Jenkins 总结一、版本&安装二、Jenkins配置1. 配置 Java 路径2. 配置用户名称(一定要改成root&#xff01;&#xff01;&#xff01;)3. 启动 &停止& 重启 Jenkins 命令1. 启动2. 停止3. 重启三、成功四、问题记录…

同事每天早下班,原来是用了这8个开发工具

引言 工欲善其事必先利其器&#xff0c;说的就是工匠要想更加高效的做事情&#xff0c;就得先将工具变得锋利。那么对于程序员来说同样也是如此&#xff0c;如果要想每天早点下班&#xff0c;就必须借助于一些开发工具来提高自己的工作效率&#xff0c;今天慕枫就给大家总结一…

【手撕源码】vue2.x双向数据绑定原理

&#x1f431; 个人主页&#xff1a;不叫猫先生 &#x1f64b;‍♂️ 作者简介&#xff1a;前端领域新星创作者、阿里云专家博主&#xff0c;专注于前端各领域技术&#xff0c;共同学习共同进步&#xff0c;一起加油呀&#xff01; &#x1f4ab;系列专栏&#xff1a;vue3从入门…

Teradata在华落幕,国产化崛起,袋鼠云数栈会是更好的选择吗?

2月15日&#xff0c;数仓软件巨头Teradata宣布根据其对中国当前和未来商业环境的慎重评估&#xff0c;将逐步结束在中国的直接运营&#xff0c;后续进入中国公司的关闭程序。 一石激起千层浪&#xff0c;这一消息&#xff0c;在国内的To B市场引起了广泛关注。Teradata这家进入…

mongoDB的安装与使用

MongoDB安装MongoDB官方网站&#xff1a;https://www.mongodb.com/try/download/community-kubernetes-operator2软件安装权限不足&#xff1a;https://www.javaclub.cn/database/56541.htmlstep1:打开安装包直接点击Nextstep2&#xff1a;继续点击Nextstep3&#xff1a;点击自…

Oracle 12C以上统计信息收集CDB、PDB执行时间不一致问题

文章目录前言一、统计信息窗口期调查二、时区调查三、查询alert记录四、why Database Statistic Collection Job is running two times inside a Maintenance Window?五、Default Scheduler Timezone Value In PDB$SEED Different Than CDB六、总结前言 在实际工作中发现一个…

Tina_Linux_功耗管理_开发指南

Tina Linux 功耗管理开发指南 1 概述 1.1 编写目的 简要介绍tina 平台功耗管理机制&#xff0c;为关注功耗的开发者&#xff0c;维护者和测试者提供使用和配置参考。 1.2 适用范围 表1-1: 适用产品列表产品名称内核版本休眠类型参与功耗管理的协处理器R328Linux-4.9NormalS…

ESP32设备驱动-MLX90393磁场传感器驱动

MLX90393磁场传感器驱动 文章目录 MLX90393磁场传感器驱动1、MLX90393介绍2、硬件准备3、软件准备4、驱动实现1、MLX90393介绍 MLX90393 磁场传感器可以在运行时重新编程为不同的模式和不同的设置。 该传感器使用 Melexis 专有的 Triaxis 技术提供与沿 XYZ 轴感应的磁通密度成…

Matplotlib之画图模块

目录 matplotlib简介 条形图 折线图 散点图 matplotlib简介 Matplotlib 是 Python 的绘图库&#xff0c;它能让使用者很轻松地将数据图形化&#xff0c;并且提供多样化的输出格式。 Matplotlib 可以用来绘制各种静态&#xff0c;动态&#xff0c;交互式的图表。 Matplotli…

OpenCV-PyQT项目实战(9)项目案例04:视频播放

欢迎关注『OpenCV-PyQT项目实战 Youcans』系列&#xff0c;持续更新中 OpenCV-PyQT项目实战&#xff08;1&#xff09;安装与环境配置 OpenCV-PyQT项目实战&#xff08;2&#xff09;QtDesigner 和 PyUIC 快速入门 OpenCV-PyQT项目实战&#xff08;3&#xff09;信号与槽机制 …

mars3d对geojson图层分属性设置样式

开发中可能会遇到如下需求&#xff0c;在全省的数据中按某个属性⾼亮展示某市区。此时就需要使⽤分属性样式的api了。⽂档如下。GeoJsonLayer - Mars3D API文档属性是根据⽮量数据的属性进⾏匹配。可以通过 layer.graphics[0]?.attr ⽅式获取。 指导有哪些属性之后先设置…

Spark3 新特性之AQE

文章目录Spark3 AQE一、 背景二、 Spark 为什么需要AQE? (Why)三、 AQE 到底是什么&#xff1f;(What)四、AQE怎么用&#xff1f;(How)4.1 自动分区合并4.2 自动数据倾斜处理4.3 Join 策略调整五、对比验证5.1 执行耗时5.2 自动分区合并5.3 自动数据倾斜处理六、结论Spark3 AQ…

电脑录屏怎么操作,操作步骤详解,2023新版

在日常的学习、生活和工作中&#xff0c;当小伙伴想要分享一段游戏视频或者教学视频时&#xff0c;电脑录屏就显得尤为重要了。但是小伙伴你是否知道电脑录屏怎么操作&#xff1f;今天小编就分享电脑录屏操作步骤的详细教程&#xff0c;一起来看看吧。 电脑录屏怎么操作1&#…