From data
--------------------------
| No | Count | Status |
| 001 | 3 | active |
| 001 | 1 |complete |
| 002 | 3 | pending |
| 003 | 2 |complete |
| 004 | 3 | active |
| 004 | 2 | pending |
| 004 | 1 |complete |
| 005 | 4 | close |
| 006 | 1 | close |
--------------------------
但是我需要查询数据。
--------------------------
| No | Count | Status |
| 001 | 4 | active |
| 002 | 3 | pending |
| 003 | 2 |complete |
| 004 | 6 | active |
| 005 | 4 | close |
| 006 | 1 | close |
--------------------------
有条件
- 无重复的总和计数
- 状态优先级顺序为
active > pending > complete > close
三条记录的状态相同 否但状态不同用于考试
--------------------------
| 004 | 3 | active |
| 004 | 2 | pending |
| 004 | 1 |complete |
--------------------------
我们将选择"状态是第一优先级"active > pending > complete > close
从数据表中active
是最好的。 结果是
--------------------------
| 004 | 6 | active |
--------------------------
如何通过 psql 查询?谢谢
为了计算重复项,您需要列出多次出现的每个条目。要按特定值获取计数,您需要按该值分组,然后应用 count 运算符。然后,您可以将其限制为仅那些计数大于 1 的结果。
问题是收集计数的查询必须是子查询,因为否则不能在 where 子句中使用计算的计数。
在您的示例中,我可以看到计数列中有重复的条目。我假设这是您要检测的:
SELECT subquery.number_of_duplicates, subquery.Count
FROM (
SELECT count(*) AS number_of_duplicates, Count
FROM table
GROUP BY Count
) AS subquery
WHERE subquery.number_of_duplicates > 1;
我真的不知道你想用这个状态做什么。你将不得不改进对问题那部分的解释。