我在做很多我想在桌子上显示的计数。我想在同一张表上显示所有计数的总和。
这是我得到的(简化-我有6个计数):
选择* FROM (选择COUNT()作为NB_book 以a1、元雪崩为m1、元雪崩为m12、 ( m1.field_id = 64 )(因为我需要该领域存在) 成本-转轨成本- m2.field_id = 66 成品率、成本税、工业品价格和m2。=帐簿 再转轨制和a1.in_archive =真 (选择计数()作为NB_toys ) 如m1,元雪崩为m12, ( m1.field_id = 64 )(因为我需要该领域存在) 成本-转轨成本- m2.field_id = 66 成品率、成本税、工业品价格和m2。=玩具 再转轨制和a1.in_archive =真 )
现在,我想让显示器像
|NB_book _ NB_Toys _ total_object _x
自愿
发布于 2014-06-04 15:53:24
你想要的东西是:
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
。
发布于 2014-06-04 16:00:44
很难弄清楚你到底想要什么。您可以运行完全不同的查询,每个查询都返回一个一行结果,并将结果组合如下:
select
(select count(*) from pgbench_accounts) as count1,
(select count(*) from pgbench_tellers) as count2 ;
但也许你不该这么做。相反,只需单独运行每个查询,并使用客户端而不是数据库引擎来格式化结果。
https://stackoverflow.com/questions/24041580
复制相似问题