mysql查询一个月内用户连续14天花费超过100元的sql语句
时间: 2023-06-30 22:04:04 浏览: 111
MySQl数据库必知必会sql语句(加强版)
可以使用以下 SQL 语句查询一个月内用户连续14天花费超过100元的数据:
```
SELECT user_id, MIN(date) AS start_date, MAX(date) AS end_date
FROM (
SELECT
user_id, date,
IF(@prev_user_id != user_id OR DATEDIFF(date, @prev_date) > 1, @seq:=1, @seq:=@seq+1) AS seq,
@prev_user_id:=user_id,
@prev_date:=date,
IF(@seq>=14 AND SUM(amount)>100, 1, 0) AS is_match
FROM expenses
CROSS JOIN (SELECT @seq:=0, @prev_user_id:=NULL, @prev_date:=NULL) AS vars
WHERE date BETWEEN DATE_SUB(NOW(), INTERVAL 1 MONTH) AND NOW()
GROUP BY user_id, date
ORDER BY user_id, date
) AS t
WHERE is_match = 1
GROUP BY user_id
```
其中,假设数据表名为 `expenses`,包含以下列:
- `user_id`:用户 ID;
- `date`:消费日期;
- `amount`:消费金额。
解释一下 SQL 的执行过程:
1. 通过 `WHERE` 子句筛选出一个月内的消费数据。
2. 使用 `CROSS JOIN` 和 `@seq`、`@prev_user_id`、`@prev_date` 三个变量来计算每位用户连续的花费天数,以及是否满足条件。
3. 根据 `is_match` 列的值进行筛选,返回匹配结果。
注意:以上 SQL 仅供参考,实际应用中需要根据数据表结构及业务需求进行调整。
阅读全文