ORACLE - 按十分钟分组
ORACLE - Group By Ten Minutes
我的 table 中有一个 time_part 列,其时间格式类似于 13:24 。我想每 10 分钟按 time_part 分组。如何按 10 分钟对时间进行分组。
这里是查询:
SELECT substr(tran_time, 1, 2) || ':' || substr(tran_time, 3, 2) as time_part, recon_date
这是我的 table 和 tran_time 是='hhmmss' :
time_part tran_time recon_date data
10:14 101425 13/12/2015 a
22:29 222939 13/12/2015 b
22:23 222342 13/12/2015 x
00:46 004615 13/12/2015 d
16:22 162259 13/12/2015 e
12:13 121344 13/12/2015 f
12:14 121410 13/12/2015 g
12:10 121008 13/12/2015 b
21:17 211732 13/12/2015 f
20:25 202511 13/12/2015 r
示例输出应该是这样的
trantime count(*)
000101 5
001101 4
002101 13
.
.
.
230101 5
231101 23
在导出的 table 中提取小时加 10 分钟的部分。然后在外层做 GROUP BY
table:
select 10_min_part, count(*)
from
(
SELECT substr(tran_time, 1, 3) as 10_min_part
from tablename
) dt
group by 10_min_part
在 SELECT 列表中,您可以将 001
连接到 10_min_part
。 (现在我不记得 Oracle 是怎么做到的...)
首先,将时间部分单独存储为字符串.
是一个糟糕的设计
其次,DATE 总是同时包含日期和时间元素。您需要做的就是在需要时使用 TO_CHAR 和所需的 格式模型 .[= 从日期中提取时间部分14=]
在你的评论中,,意思是,recon_date
既有日期元素,也有时间元素。因此,您不需要 SUBSTR
,只需在日期列上使用 TO_CHAR。
SELECT TO_CHAR(recon_date, 'mi'), COUNT(*)
FROM your_table
GROUP BY TO_CHAR(recon_date, 'mi');
我的 table 中有一个 time_part 列,其时间格式类似于 13:24 。我想每 10 分钟按 time_part 分组。如何按 10 分钟对时间进行分组。
这里是查询:
SELECT substr(tran_time, 1, 2) || ':' || substr(tran_time, 3, 2) as time_part, recon_date
这是我的 table 和 tran_time 是='hhmmss' :
time_part tran_time recon_date data
10:14 101425 13/12/2015 a
22:29 222939 13/12/2015 b
22:23 222342 13/12/2015 x
00:46 004615 13/12/2015 d
16:22 162259 13/12/2015 e
12:13 121344 13/12/2015 f
12:14 121410 13/12/2015 g
12:10 121008 13/12/2015 b
21:17 211732 13/12/2015 f
20:25 202511 13/12/2015 r
示例输出应该是这样的
trantime count(*)
000101 5
001101 4
002101 13
.
.
.
230101 5
231101 23
在导出的 table 中提取小时加 10 分钟的部分。然后在外层做 GROUP BY
table:
select 10_min_part, count(*)
from
(
SELECT substr(tran_time, 1, 3) as 10_min_part
from tablename
) dt
group by 10_min_part
在 SELECT 列表中,您可以将 001
连接到 10_min_part
。 (现在我不记得 Oracle 是怎么做到的...)
首先,将时间部分单独存储为字符串.
是一个糟糕的设计其次,DATE 总是同时包含日期和时间元素。您需要做的就是在需要时使用 TO_CHAR 和所需的 格式模型 .[= 从日期中提取时间部分14=]
在你的评论中,recon_date
既有日期元素,也有时间元素。因此,您不需要 SUBSTR
,只需在日期列上使用 TO_CHAR。
SELECT TO_CHAR(recon_date, 'mi'), COUNT(*)
FROM your_table
GROUP BY TO_CHAR(recon_date, 'mi');