如何解决根据上次更新日期+空值
遇到我认为很简单的麻烦。为了获取没有标题的商品的计数,我们的系统按“ last_updated_date”跟踪记录。
id work_item title last_updated_date
1 task1 ProjectA 2020-03-25 20:20:01.111
2 task2 ProjectA 2020-03-25 20:20:01.111
3 task3 2020-03-25 20:20:01.111
4 task4 ProjectB 2020-03-25 20:20:01.111
5 task5 ProjectC 2020-03-25 20:20:01.111
如您所见,我需要查看哪些工作项没有项目。如果我要查看“ task1”的历史记录,则会看到类似以下的内容:
select work_item,last_updated_date,project
from table
where work_item = 'task1'
这将输出:
work_item last_updated_date title
task1 2020-03-25 20:20:01.111 ProjectA
task1 2020-03-17 20:20:01.111 NULL
task1 2020-03-12 20:20:01.111 NULL
基于此,我可以看到task1在2020-03-25分配了一个标题。我需要知道的是,整个数据集中有多少个工作项目没有分配项目。因此,我想使用上次更新的日期检查所有记录,并检查最新的last_updated_date以查看title是否为空。我尝试了以下操作,但我认为我在使用MAX和/或分组错误?我正在获取分配了标题的记录,这使我认为它正在检查整个last_updated_date列的MAX值,而不是其中的每个记录。
select id,title,MAX(last_updated_date) as "latest_timestamp"
FROM table
WHERE title is null
group by id,title
我只想看到task3显示为需要分配标题。
解决方法
一个选项使用子查询来过滤每个项目的最新记录。然后,您可以计算其中有多少个没有标题:
select count(*)
from mytable t
where
last_updated_date = (
select max(t1.last_updated_date)
from mytable t1
where t1.work_item = t.work_item
)
and title is null
您还可以使用窗口功能:
select count(*)
from (
select t.*,row_number() over(partition by work_item order by last_updated_date desc) rn
from mytable t
) t
where rn = 1 and title is null
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。