SQL 查询来检查计数

问题描述 投票:0回答:1

我在 bigquery 中有一列,时间格式如下。时间(时间以 utc 为单位)以 15 分钟为间隔增加(从 00:10 开始),并持续一整天直到 23:......

00:10   
00:25   
00:40   
...

现在我想检查我们是否有使用查询更新的数据。那就是每个时间点我们应该有多个条目(按时间分组时计数应该> 0)。如果在特定点没有计数,我的查询应该返回一个标志,并引发该标志。 如果我们在 01:05 运行查询,我们知道应该有四个非零计数点 (00:10 00:25 00:40 00:55) 我们如何使用查询来比较和确保这一点?

select timecolumn as time, count(*) as cnt 
from 'project.dataset.table' 
group by 1 
order by 1 

会给出以下内容

00:10     5 
00:25     5
00:40     10

....



select timecolumn as time, count(*) as cnt 
from 'project.dataset.table'
sql google-bigquery
1个回答
0
投票

我相信你可以跳过

group by
并做这样的事情

with required_times as (
  select * from unnest(GENERATE_TIMESTAMP_ARRAY(
    date_add(timestamp_trunc(current_timestamp(), DAY), INTERVAL 10 MINUTE), 
    date_add(timestamp_trunc(current_timestamp(), DAY), INTERVAL 1 DAY), 
    INTERVAL 15 MINUTE)) as timecolumn
),
my_data_table as (
  select * from unnest(GENERATE_TIMESTAMP_ARRAY(
    date_add(timestamp_trunc(current_timestamp(), DAy), INTERVAL 10 MINUTE), 
    date_add(timestamp_trunc(current_timestamp(), DAY), INTERVAL 23 HOUR), 
    INTERVAL 15 MINUTE)) as timecolumn
)

select
  required_times.timecolumn
from
  required_times
  left join my_data_table on required_times.timecolumn = my_data_table.timecolumn
where
  my_data_table.timecolumn is null 

将返回这个,因为一天中最后一个小时的记录从 my_data_table 中丢失

© www.soinside.com 2019 - 2024. All rights reserved.