Postgresql 查询减一table

Postgresql query substract from one table

我在 Postgresql 中有一个 tables,但找不到如何构建查询。 table 包含列 nr_serii 和 deleteing_time。我试图计算 nr_serii 并用 deleting_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       |
+--------------------+

table部分原始数据:

+--------------------------------+
| "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  |
| ...         |
+-------------+

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

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

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

Here 是一个 db<>fiddle.