首页 > 解决方案 > Postgresql 查询从一张表中减去

问题描述

我在 Postgresql 中有一个表,但找不到如何构建查询。该表包含列 nr_serii 和 deleteing_time。我试图计算 nr_serii 并用 delete_time 从这个位置减去。我的查询:


select nr_serii , count(nr_serii ) as ilosc,count(deleting_time) as ilosc_delete
from MyTable 
group by nr_serii, deleting_time

输出是:

+--------------------+
| "666666";1;1       |
| "456456";1;0       |
| "333333";3;0       |
| "333333";1;1       |
| "111111";1;1       |
| "111111";3;0       |
+--------------------+

包含原始数据的表格部分:

+--------------------------------+
| "666666";"2020-11-20 14:08:13" |
| "456456";""                    |
| "333333";""                    |
| "333333";""                    |
| "333333";""                    |
| "333333";"2020-11-20 14:02:23" |
| "111111";""                    |
| "111111";""                    |
| "111111";"2020-11-20 14:08:04" |
| "111111";""                    |
+--------------------------------+

我需要减去列 ilosc 和列 ilosc_delete 示例:

nr_serii:333333 ilosc:3-1=2

预期输出:

+-------------+
| "666666";-1 |
| "456456";1  |
| "333333";2  |
| "111111";2  |
| ...         |
+-------------+

我认为这是非常简单的解决方案,但我脑子里一片空白。

标签: sqlpostgresqlselectcountcalculation

解决方案


我明白你现在想要什么了。您想从为空的数字中减去deleting_time不为空的数字:

select nr_serii,
       count(*) filter (where deleting_time is null) - count(deleting_time) as ilosc_delete
from MyTable 
group by nr_serii;

是一个 db<>fiddle。


推荐阅读