sql如何统计连续2天及以上在该店铺购物的用户及其对应的次数
时间: 2023-03-21 13:02:50 浏览: 696
假设你有一个名为`shopping_records`的表,包含以下字段:
- `user_id`: 用户ID
- `store_id`: 商店ID
- `purchase_date`: 购买日期
那么,可以使用如下SQL语句来统计连续2天及以上在该店铺购物的用户及其对应的次数:
```sql
SELECT
user_id,
COUNT(*) AS purchase_count
FROM (
SELECT
user_id,
store_id,
purchase_date,
DATEDIFF(purchase_date,
LAG(purchase_date) OVER (PARTITION BY user_id, store_id
ORDER BY purchase_date)) AS date_diff
FROM shopping_records
) AS subquery
WHERE store_id = 'your_store_id'
AND date_diff = 1
GROUP BY user_id
HAVING COUNT(*) >= 1;
```
该查询使用了窗口函数`LAG()`来计算每个用户在同一个商店中相邻两次购物之间的天数差异,并将结果存储在名为`date_diff`的虚拟列中。接下来,使用子查询将原始数据与`date_diff`虚拟列组合在一起,然后过滤出在目标商店购物且购物日期相邻的记录。最后,根据`user_id`分组并计算每个用户在该商店中的购物次数,只返回购物次数大于等于2的用户。
请注意,该查询只统计在该店铺购物的用户。如果您需要包括跨店购物的用户,请删除`store_id = 'your_store_id'`这一条件即可。