如何通过PSQL查询我的需求数据

时间:2015-01-29 10:07:12

标签: database compare record psql

来自数据

--------------------------
|  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查询?感谢

1 个答案:

答案 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;

我真的不知道你想对这个状态做什么。您将不得不改进对该部分问题的解释。