【问题标题】:Postgresql query substract from one tablePostgresql 查询从一张表中减去
【发布时间】:2023-03-16 09:10:01
【问题描述】:

我在 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  |
| ...         |
+-------------+

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

【问题讨论】:

  • 请同时提供示例数据。
  • 请将您的数据重新发布为格式化文本 - no images。一个好的文本格式器位于Senseful Solutions。将结果从那里粘贴到仅包含 ``` 的行之间。另外发布该数据的预期输出。

标签: sql postgresql select count calculation


【解决方案1】:

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

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

Here 是一个 dbfiddle。

【讨论】:

  • 几乎,因为我更新了我的帖子,表中的 nr_seri:333333 是 4 次,3 次没有删除,1 次被删除,所以我预计 nr_serii:333333 计数是 2
  • @miszcsu 。 . .这不是返回的吗?
  • 否,此查询返回 nr_serii(333333) 为 3,但我预计为 2。程序的算法是:每行 nr_serii 增加库存,但当我减少库存时,程序添加另一行 nr_serii并填写 deleteing_time 列。
  • Gordon Linoff - 完美解决方案!这正是我所需要的。非常感谢。当您更新答案时,我没有看到以前的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多