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



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;

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

相关内容

  • 没有找到相关文章

最新更新