程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何使用windows函数检索第一个日期和最后一个日期?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何使用windows函数检索第一个日期和最后一个日期??

开发过程中遇到如何使用windows函数检索第一个日期和最后一个日期?的问题如何解决?下面主要结合日常开发的经验,给出你关于如何使用windows函数检索第一个日期和最后一个日期?的解决方法建议,希望对你解决如何使用windows函数检索第一个日期和最后一个日期?有所启发或帮助;

我有一些数据,比如(表格有更多列,这是一个示例输出):

如何使用windows函数检索第一个日期和最后一个日期?

我想检索 factory_ID、first_read_date、last_read_date 和 total_count。 (first_read_date,last_read_date 基于 factory_ID) 我尝试使用 windows 函数,但最后的 read_date 不正确。 这是我所做的:

with temptable as(
select
factory_ID,read_date,rank() over(partition by factory_ID order by read_date asc) as Ranked_first_read_date,rank() over(partition by factory_ID order by read_date desc) as Ranked_last_read_data,concat(read_date,' _ ',rank() over(partition by factory_ID order by read_date asc)) as first_read_date,rank() over(partition by factory_ID order by read_date desc)) as last_read_date,count(*) over() as total_count
from TestDatabase.sensor_data
order by factory_ID,read_date)
select * from temptable a
where Ranked_first_read_date=1 and 
Ranked_last_read_data=(select max(b.Ranked_last_read_data) from temptable b where a.factory_ID=b.factory_ID group by factory_ID)

我正在使用 Bigquery。 任何帮助将不胜感激。

解决方法

您应该尝试执行以下查询:-

select factory_id,min(read_date) as first_read_date,max (read_date) as last_read_date,count(*) as total_count_per_FacID,(select count(*) from table) as total
FROM table
group by factory_id 
,

factory_id、first_read_date、last_read_date 和 total_count

结合窗口函数使用聚合:

select sd.factory_id,min(sd.read_date) as first_read_date,max(sd.read_date) as last_read_date,count(*) as cnt_per_factory,sum(count(*)) over () as cnt_total
from TestDatabase.sensor_data sd
group by factory_id 

大佬总结

以上是大佬教程为你收集整理的如何使用windows函数检索第一个日期和最后一个日期?全部内容,希望文章能够帮你解决如何使用windows函数检索第一个日期和最后一个日期?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: