使用with用法编写7天内连续活跃3次的用户sql
时间: 2023-11-27 22:49:07 浏览: 65
假设我们有一个用户表user_info,包含用户ID(user_id)和活跃日期(active_date)两个字段,下面是使用with语法编写的7天内连续活跃3次的用户SQL:
```
WITH active_users AS (
SELECT
user_id,
active_date,
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY active_date) AS row_num
FROM user_info
WHERE active_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 6 DAY)
)
SELECT DISTINCT au1.user_id
FROM active_users au1
JOIN active_users au2 ON au2.user_id = au1.user_id AND au2.row_num = au1.row_num + 1
JOIN active_users au3 ON au3.user_id = au2.user_id AND au3.row_num = au2.row_num + 1;
```
这个SQL语句首先使用with语法创建了一个名为active_users的临时表,该表按照用户ID和活跃日期排序,并为每个用户分配一个行号(row_num)。然后,我们使用三个自我联接获取在7天内连续活跃3次的用户ID。具体地,我们使用au1、au2和au3三个别名来代表active_users表中的三个不同的行,然后使用JOIN子句将它们连接起来。最后,我们使用DISTINCT关键字去重得到符合条件的用户ID。
阅读全文