有人能就查询提供建议,以获得每个期间的新条目和已删除条目的总和吗?
我有一个表,包含这样的历史数据(具有GUID+日期的PKI(表1
GUID Date Category
----------------------------------
00001 2020-04-01 A
00002 2020-04-01 B
00003 2020-04-01 C
00001 2020-04-02 A
00002 2020-04-02 B
00003 2020-04-02 C
00004 2020-04-02 A
00001 2020-04-03 A
00002 2020-04-03 B
00003 2020-04-03 C
00004 2020-04-03 A
00007 2020-04-03 A
00005 2020-04-03 B
00001 2020-04-04 A
00002 2020-04-04 B
00004 2020-04-04 A
00007 2020-04-04 A
00005 2020-04-04 B
因此,我需要获得添加和删除期间(每月的最小日期(的guid的总和。
在这个例子中,它将是
表2
Status Period Category Amount
----------------------------------------
New 2020-04-01 A 2
New 2020-04-01 B 1
Removed 2020-04-01 C 1
谢谢你的建议和帮助。
如果我理解正确,您需要比较每个guid的第一次和最后一次出现。我想这个月这个类别不会改变。
如果这是正确的,您可以使用聚合:
select (case when max_date < data_max_date then 'removed'
when min_date > data_min_date then 'new'
end) as status,
category, count(*)
from (select guid, category, min(date) as min_date, max(date) as max_date,
min(min(date)) over () as data_min_date,
max(max(date)) over () as data_max_date
from t
group by guid, category
) gc
where min_date <> data_min_date or max_date <> data_max_date
group by category;