将所有带有 groupby 时间戳的计数按小时间隔计算
get count all with groupby timestamp into hourly intervals
我有一个配置单元 table,它有一个字符串格式的时间戳,如下所示,
20190516093836, 20190304125015, 20181115101358
我想按如下所示将具有聚合时间戳的行计数转换为每小时
date_time count
-----------------------------
2019:05:16: 00:00:00 23
2019:05:16: 01:00:00 64
我跟进了几个 类似的方法,但仍无法生成所需的结果。
这是我的最终查询:
SELECT
DATE_PART('day', b.date_time) AS date_prt,
DATE_PART('hour', b.date_time) AS hour_prt,
COUNT(*)
FROM
(SELECT
from_unixtime(unix_timestamp(`timestamp`, "yyyyMMddHHmmss")) AS date_time
FROM table_name
WHERE from_unixtime(unix_timestamp(`timestamp`, "yyyyMMddHHmmss"))
BETWEEN '2018-12-10 07:02:30' AND '2018-12-12 08:02:30') b
GROUP BY
date_prt, hour_prt
希望得到您的指导,在此先感谢
您可以提取 date_time 所需的格式 'yyyy-MM-dd HH:00:00'
。我更喜欢使用 regexp_replace:
SELECT
date_time,
COUNT(*) as `count`
FROM
(SELECT
regexp_replace(`timestamp`, '^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$','-- :00:00') AS date_time
FROM table_name
WHERE regexp_replace(`timestamp`, '^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$','-- ::')
BETWEEN '2018-12-10 07:02:30' AND '2018-12-12 08:02:30') b
GROUP BY
date_time
这也适用:
from_unixtime(unix_timestamp('20190516093836', "yyyyMMddHHmmss"),'yyyy-MM-dd HH:00:00') AS date_time
我有一个配置单元 table,它有一个字符串格式的时间戳,如下所示,
20190516093836, 20190304125015, 20181115101358
我想按如下所示将具有聚合时间戳的行计数转换为每小时
date_time count
-----------------------------
2019:05:16: 00:00:00 23
2019:05:16: 01:00:00 64
我跟进了几个
这是我的最终查询:
SELECT
DATE_PART('day', b.date_time) AS date_prt,
DATE_PART('hour', b.date_time) AS hour_prt,
COUNT(*)
FROM
(SELECT
from_unixtime(unix_timestamp(`timestamp`, "yyyyMMddHHmmss")) AS date_time
FROM table_name
WHERE from_unixtime(unix_timestamp(`timestamp`, "yyyyMMddHHmmss"))
BETWEEN '2018-12-10 07:02:30' AND '2018-12-12 08:02:30') b
GROUP BY
date_prt, hour_prt
希望得到您的指导,在此先感谢
您可以提取 date_time 所需的格式 'yyyy-MM-dd HH:00:00'
。我更喜欢使用 regexp_replace:
SELECT
date_time,
COUNT(*) as `count`
FROM
(SELECT
regexp_replace(`timestamp`, '^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$','-- :00:00') AS date_time
FROM table_name
WHERE regexp_replace(`timestamp`, '^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$','-- ::')
BETWEEN '2018-12-10 07:02:30' AND '2018-12-12 08:02:30') b
GROUP BY
date_time
这也适用:
from_unixtime(unix_timestamp('20190516093836', "yyyyMMddHHmmss"),'yyyy-MM-dd HH:00:00') AS date_time