写一条sql 最后一次绑定插件的时间算起,若一个用户满足下面任何一项条件,则触发报警 1. 过去一年内绑定的插件设备总数 > 20 2. 过去 30 天里绑定的插件设备总数 > 2 个 最后一次绑定插件的时间算起,若一个用户满足下面任何一项条件,则触发报警 1. 过去一年内绑定的插件设备总数 > 20 2. 过去 30 天里绑定的插件设备总数 > 2 个
时间: 2024-04-13 08:28:49 浏览: 126
您可以使用以下SQL查询来满足您的需求:
```sql
SELECT user_id, MAX(bind_time) AS last_bind_time
FROM plugin_bindings
GROUP BY user_id
HAVING
COUNT(DISTINCT CASE WHEN bind_time >= DATE_SUB(NOW(), INTERVAL 1 YEAR) THEN plugin_id END) > 20
OR
COUNT(DISTINCT CASE WHEN bind_time >= DATE_SUB(NOW(), INTERVAL 30 DAY) THEN plugin_id END) > 2;
```
这个查询将按用户分组,并找出每个用户的最后一次绑定插件的时间。然后,通过使用`HAVING`子句,我们筛选出满足以下条件的用户:
1. 在过去一年内绑定的插件设备总数大于20;
2. 在过去30天内绑定的插件设备总数大于2。
如果一个用户满足上述任何一项条件,该用户将被选中并触发报警。您可以根据需要将`plugin_bindings`替换为您实际的表名,并根据数据库中的字段进行相应的调整。
阅读全文