如何在PieCloudDB中查询状态始终为'high'的用户数据
查询状态始终为'high'的用户记录
原始数据表
| user_id | quarterly_log | status |
|---|---|---|
| 110 | 1 | high |
| 110 | 2 | high |
| 110 | 3 | high |
| 110 | 4 | high |
| 120 | 1 | low |
| 120 | 2 | high |
| 120 | 3 | low |
| 120 | 4 | high |
| 130 | 1 | high |
| 130 | 2 | high |
| 130 | 3 | high |
| 130 | 4 | high |
需求
筛选出所有user_id对应的所有季度记录中,status始终为high的行,排除存在至少一条非high状态记录的用户的所有行。
解决方案
方法一:排除法
先找出存在非high状态的用户ID,再从原表中排除这些用户的记录:
SELECT user_id, quarterly_log, status FROM your_table_name WHERE user_id NOT IN ( SELECT DISTINCT user_id FROM your_table_name WHERE status != 'high' );
方法二:聚合关联法
通过分组聚合判断每个用户的状态是否全为high,再关联原表获取所有对应行:
SELECT t.user_id, t.quarterly_log, t.status FROM your_table_name t INNER JOIN ( SELECT user_id FROM your_table_name GROUP BY user_id HAVING COUNT(DISTINCT status) = 1 AND MIN(status) = 'high' ) valid_users ON t.user_id = valid_users.user_id;
注意:将上述SQL中的
your_table_name替换为你的实际表名。
预期查询结果
| user_id | quarterly_log | status |
|---|---|---|
| 110 | 1 | high |
| 110 | 2 | high |
| 110 | 3 | high |
| 110 | 4 | high |
| 130 | 1 | high |
| 130 | 2 | high |
| 130 | 3 | high |
| 130 | 4 | high |
内容的提问来源于stack exchange,提问作者Meliodas Dragon
相关产品推荐
相关产品推荐

