如何获得每小时使用hive的唯一用户的平均数量?

btqmn9zl  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(302)

我把这些数据放在我的表中:

camera_id     person_id         datetime
1             1                 2017-03-02 18:06:20
1             1                 2017-03-02 18:05:10
1             1                 2017-04-01 18:04:09
2             1                 2017-03-02 19:06:50
2             2                 2017-03-02 19:07:22
2             2                 2017-03-02 19:09:15
2             3                 2017-05-03 19:07:05
2             4                 2017-05-03 19:19:08
2             5                 2017-05-03 19:20:18

我需要计算每个摄像头每小时检测到的独特人物的平均数量。
举个例子,让我们用照相机 2 还有一个从19:00到20:00的时间窗口。摄像机确定了两次独特的访问 2017-03-02 3次独特的访问 2017-05-03 . 所以,答案是(2+3)/2=2.5
预期结果:

camera_id   HOUR   HOURLY_AVG_COUNT
1           18     1
2           19     2.5
3okqufwl

3okqufwl1#

select      camera_id
           ,hour(datetime)                                                                                             as hour
           ,count(distinct person_id,date(datetime),hour(datetime)) / 
                count(distinct date(datetime),hour(datetime))    as hourly_avg_count 

from        my_table 

group by    camera_id
           ,hour(datetime) 

order by    camera_id
;
+-----------+------+------------------+
| camera_id | hour | hourly_avg_count |
+-----------+------+------------------+
|         1 |   18 | 1                |
|         2 |   19 | 2.5              |
+-----------+------+------------------+

附笔 date(datetime),hour(datetime) 也可以替换为以下内容之一:
substr(cast(datetimeas string),1,13) date_format(datetime,'yyyy-MM-dd HH')

相关问题