我需要计算我在 postgresql 中的查询的总计数

I need to get count of total count for the query I had in postgresql

我创建了一个 select 查询如下,现在我需要在单独的行中获取“No.of 生成的想法”列的总数作为总数,其中将包含特定 idea_sector 和 idea_industry 组合的个人计数。

查询:

 select c.idea_sector,c.idea_industry,
count(*) as "No.of Ideas generated"
from hackathon2k21.consolidated_report c
group by idea_sector,idea_industry
order by idea_sector ,idea_industry

输出:

 ----------------------------------------------------------------------
   idea_sector         idea_industry                 No.of Ideas generated
    -----------------------------------------------------------------------
    COMMUNICATION-ROC   TELECOMMUNICATIONS            1 
    Cross Sector        Cross Industry                5 
    DISTRIBUTION        TRAVEL AND TRANSPORTATION     1 
    FINANCIAL SERVICES  BANKING                       1
    PUBLIC              HEALTHCARE                    1

要求输出:

    ----------------------------------------------------------------------
       idea_sector         idea_industry                 No.of Ideas generated
        -----------------------------------------------------------------------
        COMMUNICATION-ROC   TELECOMMUNICATIONS            1 
        Cross Sector        Cross Industry                5 
        DISTRIBUTION        TRAVEL AND TRANSPORTATION     1 
        FINANCIAL SERVICES  BANKING                       1
        PUBLIC              HEALTHCARE                    1
------------------------------------------------------------------------
        Total                                             9

最简单的方法似乎是像这样添加一个 UNION ALL 运算符:

select c.idea_sector,c.idea_industry,
count(*) as "No.of Ideas generated"
from hackathon2k21.consolidated_report c
group by idea_sector,idea_industry
--order by idea_sector ,idea_industry

UNION ALL
SELECT 'Total', NULL, COUNT(*)
from hackathon2k21.consolidated_report

您可以使用分组集来完成此操作。这就是我们在 GROUP BY 子句中告诉 postgres 的所有不同方式,我们希望看到我们的结果集针对聚合列进行分组

SELECT 
    c.idea_sector,
    c.idea_industry,
    count(*) as "No.of Ideas generated"
FROM hackathon2k21.consolidated_report c
GROUP BY
    GROUPING SETS (
       (idea_sector,idea_industry),
       ())
ORDER BY idea_sector ,idea_industry;

这会生成两个分组集。一个按 idea_sector, idea_industry 粒度分组,就像在您现有的 sql 中一样,另一个按空分组,本质上创建一个完整的 table Total.