SQL按时间段进行分组统计 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

    SQL按时间段进行分组统计

    Java代码

    [code=SQL]

    一个按五分钟分段统计的例

    create table tb(时间 datetime , 金额 int)

    insert into tb values('2007-1-1 10:00:23' ,     8 )

    insert into tb values('2007-1-1 10:01:24' ,     4 )

    insert into tb values('2007-1-1 10:05:00' ,     2 )

    insert into tb values('2007-1-1 10:06:12' ,     3 )

    insert into tb values('2007-1-1 10:08:00' ,     1 )

    insert into tb values('2007-1-1 10:12:11' ,     5 )

    go

    --时间段>=10:00:00 and 时间段<10:05:00

    select dateadd(mi,(datediff(mi,convert(varchar(10),dateadd(ss,-1,时间),120),dateadd(ss,-1,时间))/5)*5,convert(varchar(10),时间,120)) as 时间段,

    count(*) as 行数,

    sum(金额) as 总金额

    from tb

    group by dateadd(mi,(datediff(mi,convert(varchar(10),dateadd(ss,-1,时间),120),dateadd(ss,-1,时间))/5)*5,convert(varchar(10),时间,120))

    /*

    时间段                          行数     总金额

    ------------------------------------------------------ ----------- -----------

    2007-01-01 10:00:00.000                3     14

    2007-01-01 10:05:00.000                2     4

    2007-01-01 10:10:00.000                1     5

    (所影响的行数为 3 行)

    */

    --时间段>10:00:00 and 时间段<=10:05:00

    select dateadd(mi,(datediff(mi,convert(varchar(10),dateadd(ss,1,时间),120),dateadd(ss,1,时间))/5)*5,convert(varchar(10),时间,120)) as 时间段,

    count(*) as 行数,

    sum(金额) as 总金额

    from tb

    group by dateadd(mi,(datediff(mi,convert(varchar(10),dateadd(ss,1,时间),120),dateadd(ss,1,时间))/5)*5,convert(varchar(10),时间,120))

    /*

    时间段                          行数     总金额

    ------------------------------------------------------ ----------- -----------

    2007-01-01 10:00:00.000                2     12

    2007-01-01 10:05:00.000                3     6

    2007-01-01 10:10:00.000                1     5

    (所影响的行数为 3 行)

    */

    drop table tb

最新文章