LeetCode MySQL 刷题条记 (七)

138 阅读2分钟

「4月日新计划更文活动」

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

+---------------+---------+
| 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 天的每日活跃用户数(当天只要有一条活动记录,即为活跃用户)。

以 任意顺序 返回结果表。

解析

# Write your MySQL query statement below

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

题目:1693. 每天的领导和合伙人

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| date_id     | date    |
| make_name   | varchar |
| lead_id     | int     |
| partner_id  | int     |
+-------------+---------+
该表没有主键。
该表包含日期、产品的名称,以及售给的领导和合伙人的编号。
名称只包含小写英文字母。

需求

写一条 SQL 语句,使得对于每一个 date_id 和 make_name,返回不同的 lead_id 以及不同的 partner_id 的数量。

按 任意顺序 返回结果表。

解析

# Write your MySQL query statement below

select  date_id ,make_name,count(distinct lead_id)as unique_leads  ,count(distinct partner_id)as unique_partners  from DailySales    group by make_name,date_id

题目:1729. 求关注者的数量

+-------------+------+
| Column Name | Type |
+-------------+------+
| user_id     | int  |
| follower_id | int  |
+-------------+------+
(user_id, follower_id) 是这个表的主键。
该表包含一个关注关系中关注者和用户的编号,其中关注者关注用户。

需求

写出 SQL 语句,对于每一个用户,返回该用户的关注者数量。 按 user_id 的顺序返回结果表。

解析

# Write your MySQL query statement below

select user_id,count(follower_id)  as followers_count from Followers group by   user_id order by user_id

知识点

DATE_ADD 函数

  • 定义:DATE_ADD 函数是一种在SQL中用来添加时间间隔的函数,在这里我是用来计算时间差范围
  • 语句格式DATE_ADD(date, INTERVAL value unit)
  • 解析:正如在栗子🌰1141DATE_ADD('2019-07-27',INTERVAL -30 day)中使用,其中
    • date 表示要进行操作的日期
    • value 表示要添加的时间值
    • unit 表示时间单位(可以是YEAR,MONTH,DAY等)

count 函数

  • 定义:COUNT 函数用于计算某个元素在列表、字符串或其他数据结构中出现的次数。
  • 语句格式:栗子🌰1729count(follower_id)

distinct函数

  • 定义: DISTINCT 函数用于在列表、数组或其他数据结构中找出不同的元素,也就是去除重复的元素。
  • 语句格式:栗子🌰1693distinct partner_id