Postgres - GROUP BY 的计数

and*_*sen 6 postgresql count

我正在尝试确定图像数据库中至少贡献了五张图像的贡献者总数。以下查询将按贡献者提供图像计数,但这只是难题的一部分。我相信这对于比我有更多知识的人来说很简单:)

SELECT count(*) AS i_count,contributor_id FROM images GROUP BY contributor_id ORDER BY i_count DESC

ype*_*eᵀᴹ 8

要计算有多少贡献者贡献了 5 个或更多图像:

SELECT COUNT(*) AS number_of_contributors
FROM
  ( SELECT 1
    FROM images 
    GROUP BY contributor_id
    HAVING COUNT(*) >= 5
  ) AS t ;
Run Code Online (Sandbox Code Playgroud)

它可以在没有派生表的情况下编写,但它被混淆了:

SELECT COUNT(*) OVER () AS number_of_contributors
FROM images 
GROUP BY contributor_id
HAVING COUNT(*) >= 5 
LIMIT 1 ;
Run Code Online (Sandbox Code Playgroud)

(两个查询之间略有不同。如果没有提供 5 个以上图像的贡献者,则第一个查询将返回一行,并带有0。第二个查询将不返回任何行。)

  • @andrewniesen:`1` 只是一个整数值,是放在那里的最基本、最便宜的东西,因为在下一个查询级别中,只有行数很重要。[`AS t` 是表别名](http://www.postgresql.org/docs/current/interactive/queries-table-expressions.html#QUERIES-TABLE-ALIASES)。基本的 SQL 问题最好直接访问 stackoverflow.com。 (3认同)