【发布时间】:2021-07-08 05:38:49
【问题描述】:
我有一些数据(表格有更多列,这是一个示例输出):
我想检索 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 ,
concat(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。 任何帮助将不胜感激。
【问题讨论】:
标签: sql group-by google-bigquery window-functions