同一个表中的COUNT的SUM

时间:2014-06-04 15:28:59

标签: postgresql count sum

我正在做很多我希望在表格中展示的计数。我想在同一张桌子上显示所有计数的总和。

这是我得到的(简化 - 我有6个计数):

  

SELECT * FROM(SELECT COUNT()AS NB_book
   item为a1,metadatavalue为m1,metadatavalue为m12,
                在哪里m1.field_id = 64(因为我需要该字段存在)
                AND m2.field_id = 66
                和m2。 =书
                AND a1.in_archive = TRUE)
                (SELECT COUNT(
)AS NB_toys
                 metadatavalue为m1,metadatavalue为m12,
                在哪里m1.field_id = 64(因为我需要该字段存在)
                 AND m2.field_id = 66
                 和m2。 =玩具
                AND a1.in_archive = TRUE)
  )

现在,我希望显示器像

------------- table ----------
| NB_book | NB_Toys | total_object |
-----------------------------
| 12 | 10 | 22 |

2 个答案:

答案 0 :(得分:1)

你想要的东西是:

SELECT
    sum(CASE WHEN condition_1 THEN 1 END) AS firstcount,
    sum(CASE WHEN condition_2 THEN 1 END) AS secondcount,
    sum(thecolumn) AS total
FROM ...

您的示例查询过于模糊,无法构建可用的内容,但这会给您提供想法。上述条件可以是任何布尔表达式。

如果您愿意,可以使用NULLIF代替CASE WHEN ... THEN ... END。我更喜欢坚持标准CASE

答案 1 :(得分:0)

很难弄清楚你真正想要的是什么。您可以运行完全不同的查询,每个查询返回一行结果并组合结果,如下所示:

select 
   (select count(*) from pgbench_accounts) as count1, 
   (select count(*) from pgbench_tellers) as count2 ;

但也许你不应该这样做。相反,只需单独运行每个查询,然后使用客户端而不是数据库引擎来格式化结果。