如何解决如何在SQL中获取一个实体的前10个条目的时差?
sql表结构:
id -> primary key
test_id -> id for test
response_date -> date on which response is received for a test
相同的test_id可以有多个响应。我的目的是找到test_id的前10个响应(第10个response_date-1st response_date)的响应时间差。我尝试使用group by
test_id和DATEDIFF
,但是没有用。请提出其他合适的方法。
Desired structure:
test_id | response_date_difference_for_first_ten_response
解决方法
如果我理解正确,则可以使用条件聚合:
select test_id,datediff(max(case when seqnum = 1 then response_date end),max(case when seqnum = 10 then response_date end)
) as response_date_difference_for_first_ten_response
from (select t.*,row_number() over (partition by test_id order by response_date) as seqnum
from t
) t
group by test_id;
您也可以这样表示:
select test_id,datediff(max(response_date),nullif(min(response_date),max(response_date))
) as response_date_difference_for_first_ten_response
from (select t.*,row_number() over (partition by test_id order by response_date) as seqnum
from t
) t
where seqnum in (1,10)
group by test_id;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。