sql - postgres 9.2 按序数计算状态数
问题描述
假设我有这个结果集:
Location|Company|Account Number|First Check Date|First Status|Second Check Date|Second Status|Third Check Date|Third Status|Fourth Check Date|Fourth Status|Fifth Check Date|Fifth Status
Westeros|Acme Corp.|1014541|8/23/2018|Denied||||||||
Westeros|Acme Corp.|1014544|8/23/2018|Pending||||||||
Westeros|Acme Corp.|1014561|8/23/2018|Pending||||||||
Westeros|Sirius Cybernetics Corp|1014562|8/22/2018|Finalized||||||||
Westeros|Sirius Cybernetics Corp|1014573|8/23/2018|Pending||||||||
Westeros|MomCorp|1014579|8/22/2018|Denied||||||||
Dorne|MomCorp|1018984|8/20/2018|Pending||||||||
Dorne|Sirius Cybernetics Corp|1019017|8/22/2018|Pending||||||||
The North|MomCorp|1033591|8/16/2018|Pending||||||||
The North|MomCorp|1033910|8/16/2018|Not Found||||||||
The North|Amerigroup|1033964|8/16/2018|Partial Payment||||||||
The North|MomCorp|1034036|8/22/2018|Paid||||||||
The North|MomCorp|1034041|8/23/2018|Partial Payment||||||||
Iron Islands|AG White|1175033|8/22/2018|Pending||||||||
Stormlands|foobar|1220179|8/14/2018|Not Found|8/21/2018|Not Found||||||
这是从可以归结为的查询返回的
select Location,Company,Account Number,First Check Date,First Status,Second Check Date,Second Status,Third Check Date,Third Status,Fourth Check Date,Fourth Status,Fifth Check Date,Fifth Status
from subselect as results
我试图做的是在每个状态列中生成元素计数。例如,第一个状态计数为 15,第二个为 1,其余为 0。
我曾尝试使用over()
并使用 a 来执行此操作,sum(case when 'first_status' then1 else 0 end)
但似乎没有给出正确的结果。
关于如何做到这一点的任何建议?
解决方案
假设缺失值为NULL
,您可以执行以下操作:
select r.*,
count(status1) over () as status1_cnt,
count(status2) over () as status2_cnt,
. . .
from subselect as results
但是,空状态可能是其他状态,例如''
. 如果是这样,一个简单的方法是:
select r.*,
count(nullif(status1, '')) over () as status1_cnt,
count(nullif(status2, '')) over () as status2_cnt,
. . .
from subselect as results
推荐阅读
- outlook - 使用 getAttachmentContentAsync 下载日历项目附件会在 OWA 和 Outlook 桌面之间返回不同的数据
- hibernate - 一对一级联持久性抛出'NULL not allowed for the foreign-key column' JdbcSQLIntegrityConstraintViolationException
- arrays - 在 perl 中使用电子邮件 :: MIME 发送多个文件?
- python - 如何为缺少的日期时间增加价值
- sql - 在没有现有触发器\机制的情况下查询以查看上次为表更新行的日期和时间?
- reactjs - History.push 无法读取未定义的属性“道具”
- python - Windows 上的 Jenkins:iOS 的 UE4 打包失败并显示“主机密钥验证失败”。
- apache-superset - 如何更改 apache 超集图表的背景颜色?
- php - 在 Wordpress 的 tag.php 中显示标签相关的档案
- apache-kafka - Compaction 在 Apache Kafka 中的工作原理