postgresql 如何创建我自己的表的基础上计数的数字从一列?

2hh7jdfx  于 2022-11-04  发布在  PostgreSQL
关注(0)|答案(1)|浏览(137)

我的表“vb10_cartridedata”中有更多列,但以下两列是我感兴趣的列:“嵌套ID”和“故障代码”:“NestID“只能提供1-16之间的数字。因此,我尝试计算NestID =1出现FailCode=11的次数...或者NestID= 4出现FailCode=4的次数...(对于每个嵌套)...
| 嵌套ID|故障代码|
| - -|- -|
| 一个|第0页|
| 一个|十一|
| 一个|十一|
| 2个|二十三个|
| 三个|二十五个|
| 四个|三十二个|
| 四个|三十二个|
从概念上讲,我希望构建一个表,它为每个单元格提供以下信息:[请注意,如果Ch 1和Ch 2列为空,则空值应表示为0]
| 嵌套ID|信道1|信道2|
| - -|- -|- -|
| 一个|计数(“故障代码”= 10)为“通道1”,其中“嵌套ID”=1|计数(“故障代码”=23)为“通道2”,其中“嵌套ID”=1|
| 2个|计数(“故障代码”= 10)为“通道1”,其中“嵌套ID”=2|计数(“故障代码”=23)为“通道2”,其中“嵌套ID”=2|
| 三个|计数(“故障代码”= 10)为“通道1”,其中“嵌套ID”=3|计数(“故障代码”=23)为“通道2”,其中“嵌套ID”=3|
| 四个|计数(“故障代码”= 10)为“通道1”,其中“嵌套ID”=4|计数(“故障代码”=23)为“通道2”,其中“嵌套ID”=4|
| 五个|计数(“故障代码”= 10)为“通道1”,其中“嵌套ID”=5|计数(“故障代码”=23)为“通道2”,其中“嵌套ID”=5|
| 六个|计数(“故障代码”= 10)为“通道1”,其中“嵌套ID”=6|计数(“故障代码”=23)为“通道2”,其中“嵌套ID”=6|
| 七个|计数(“故障代码”= 10)为“通道1”,其中“嵌套ID”=7|计数(“故障代码”=23)为“通道2”,其中“嵌套ID”=7|
| 八个|计数(“故障代码”= 10)为“通道1”,其中“嵌套ID”=8|计数(“故障代码”=23)为“通道2”,其中“嵌套ID”=8|
| 九个|计数(“故障代码”= 10)为“通道1”,其中“嵌套ID”=9|计数(“故障代码”=23)为“通道2”,其中“嵌套ID”=9|
| 10个|计数(“故障代码”= 10)为“通道1”,其中“嵌套ID”=10|计数(“故障代码”=23)为“通道2”,其中“嵌套ID”=10|
| 十一|计数(“故障代码”= 10)为“通道1”,其中“嵌套ID”=11|计数(“故障代码”=23)为“通道2”,其中“嵌套ID”=11|
| 十二个|计数(“故障代码”= 10)为“通道1”,其中“嵌套ID”=12|计数(“故障代码”=23)为“通道2”,其中“嵌套ID”=12|
| 十三个|计数(“故障代码”= 10)为“通道1”,其中“嵌套ID”=13|计数(“故障代码”=23)为“通道2”,其中“嵌套ID”=13|
| 十四|计数(“故障代码”= 10)为“通道1”,其中“嵌套ID”=14|计数(“故障代码”=23)为“通道2”,其中“嵌套ID”=14|
| 十五个|计数(“故障代码”= 10)为“通道1”,其中“嵌套ID”=15|计数(“故障代码”=23)为“通道2”,其中“嵌套ID”=15|
| 十六岁|计数(“故障代码”= 10)为“通道1”,其中“嵌套ID”=16|计数(“故障代码”=23)为“通道2”,其中“嵌套ID”=16|
所以,我期待看到这样的东西:
| 嵌套ID|信道1|通道2|
| - -|- -|- -|
| 一个|五个|第0页|
| 2个|三十三个|一百七十三|
| 三个|五个|第0页|
| 四个|20个|二十八人|
| 五个|第0页|一百九十三|
| 六个|一个|二十七人|
| 七个|二百零三人|一个|
| 八个|十三个|第0页|
| 九个|2个|二百六十一|
| 10个|20个|第0页|
| 十一|一百七十三|二十三个|
| 十二个|第0页|五十三个|
| 十三个|第0页|第0页|
| 十四|第0页|第0页|
| 十五个|五个|十四|
| 十六岁|一百零六个|第0页|
我已经尝试了以下方法,但对我不起作用(请查看图片,了解我得到的结果):

SELECT "NestID",
"FailCode",
count ("FailCode"=23) as "CH1", count ("FailCode"=11) as "CH2"
FROM public.vb10_cartridgedata
group by 1, 2;

Picture of my Query Attempt

zzzyeukh

zzzyeukh1#

下面是解决我的问题的方法。感谢dba的另一篇文章的帮助。stackexchange抱歉交叉发布

SELECT distinct ("NestID"),
count (*) FILTER (WHERE "FailCode" =23) as "CH1",
count (*) FILTER (WHERE "FailCode" =11) as "CH2"
FROM public.vb10_cartridgedata
group by 1
;

Image of Solved issue

相关问题