Postgres 中的 GROUP BY 和 COUNT

GROUP BY and COUNT in Postgres

我需要获取子查询的顶级计数,查询中填充了一些模拟值,实际上我想获取 IN 操作中的 id 的计数,在本例中为 2 . group by 是postgre 所要求的。此外,我正在使用 knex,如果它有帮助的话

select "uid", count(uid)
from "table"
where ("table"."field" not in ('v1', 'v2'))
  and "table"."uid" in ('1', '2')
group by "table"."uid"
order by "table"."createdAt" desc

当前输出为

[
  {
    "uid": "1",
    "count": 1
  },
  {
    "uid": "2",
    "count": 1
  },
]

要获得查询的顶级计数,您可以使用以下语法:

select count(*) from ( %YOURQUERY% ) q;

请注意,对于内部查询,您始终需要一个别名(在本例中为 q)。另请注意,在内部查询中,ORDER BY 子句是可以避免的。

附带说明一下,要回答您的具体问题,您只需运行以下内容:

select count(*) from table where uid in ('1', '2');