来自数据
--------------------------
| 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查询?感谢
答案 0 :(得分:1)
为了计算重复项,您需要列出多次出现的每个条目。要按特定值获取计数,您需要按该值进行分组,然后应用计数运算符。然后,您可以将其限制为只有那些计数大于1的结果。
问题是收集计数的查询必须是子查询,否则你不能在where子句中使用计算的计数。
在您的示例中,我可以看到count列中有重复的条目。我认为这是你想要检测的:
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;
我真的不知道你想对这个状态做什么。您将不得不改进对该部分问题的解释。