`
FirstBlood
  • 浏览: 162129 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

SQL 按 时间段 进行分组统计

阅读更多
[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


转载http://bbs.csdn.net/topics/360003771
分享到:
评论

相关推荐

    Oracle数据库按时间进行分组统计数据的方法

    在本示例中,我们关注的是如何利用SQL查询按时间进行分组统计数据。以下将详细介绍几种常见的分组方法及其应用。 1. **按年份分组**: 使用`to_char()`函数将日期字段转换为年份格式,并结合`GROUP BY`子句进行分组...

    SQLserver 实现分组统计查询(按月、小时分组)

    在SQL Server中,进行分组统计查询是数据分析和报表生成中的常见操作。本文将详细讲解如何根据日期的月和小时部分进行分组统计,以满足特定的查询需求。 首先,我们创建一个名为`Counter`的表格,用于存储访问记录...

    SqlServer中Group By高级使用--Inner Join分组统计

    进一步扩展,如果我们想在分组统计中包含更复杂条件,比如只考虑某个时间段内的订单,可以添加WHERE子句: ```sql SELECT Customers.CustomerName, SUM(Orders.OrderAmount) FROM Orders INNER JOIN Customers ON...

    MYSQL每隔10分钟进行分组统计的实现方法

    在数据库领域,进行数据统计分析是常见的需求,尤其是在实时监控、业务分析等场景中,需要对数据按时间段进行分组统计。本文将详细介绍如何使用MySQL数据库每隔一定时间(例如每10分钟)对数据进行分组统计的实现...

    sql中的按日期统计问题

    数据分析时常需要分析特定时间段的数据,比如周、季度或年度。这可以通过计算日期之间的差值来实现,或者利用SQL的内置功能,如MySQL的`INTERVAL`关键字: ```sql SELECT * FROM table WHERE date_column ...

    group by 按某一时间段分组统计并查询(推荐)

    工作中要求对日志表中的时间戳字段进行分组。分组的条件是,相隔 1分钟间隔的被分到一组。 数据库表是这样的 SELECT COUNT(log_id) AS u_count FROM logdb.`log` GROUP BY TIMESTAMP-TIMESTAMP%(1*60) 其中...

    sqlserver/mysql按天、按小时、按分钟统计连续时间段数据【推荐】

    - 这些生成的连续时间段可以作为`GROUP BY`子句中的字段,以便按时间段对数据进行分组统计。例如,对于按天统计交易笔数,可以将生成的日期与交易数据的日期字段进行匹配,然后计算每天的交易次数。 4. **与业务...

    sql中时间以5分钟半个小时任意间隔分组的实现方法

    本文主要探讨如何在SQL中以5分钟或半个小时为间隔对时间数据进行分组,以达到统计特定时间段内数据的目的。我们将介绍两种不同的实现方法,一种是通过自定义函数,另一种则是利用时间戳和算术运算。 方法1:自定义...

    sql时间查询语句学习

    在这里,`DATEPART`函数被用来提取日期的月份部分,而`GROUP BY`子句则按照月份对结果进行分组,从而实现按月统计。 #### 按小时、天统计特定时间段的数据 同样,我们也可以按小时或天来进行更精细的统计数据。...

    mysql 统计一天24小时数据默认补0SQL

    这里使用 `HOUR` 函数来获取 `login_time` 的小时部分,并用 `GROUP BY hours` 来分组统计数据。 ```sql SELECT HOUR(login_time) AS hours, SUM(user_id) AS count FROM tb_log_login WHERE DATE_FORMAT(login...

    Sql Server时间函数

    - 分析数据时按月份分组统计数据。 #### 5. DateName() **函数描述**: `DateName()` 函数返回代表指定日期的指定日期部分的字符串。 **语法**: ```sql DATENAME(interval, date) ``` - `interval`:指定要转换...

    经典SQL脚本大全

    │ │ 6.1.5 按指定上下限区间进行数据统计的示例.sql │ │ 6.1.6 随机出题的示例.sql │ │ 6.2.1 ROLLUP实现的分级汇总示例(定义各汇总列标题).sql │ │ 6.2.1 ROLLUP实现的分级汇总示例(带排序及汇总列标题处理...

    SQL语句技巧:按月统计数据

    在SQL中,对数据进行按月统计是一种常见的需求,特别是在数据分析和报告生成中。这个问题的描述涉及到了如何从一个包含日期和数量的表格中提取每月的总和。表的结构非常简单,有两个字段:`qty`(数量)和`date`...

    一道SQL Server面试题

    5. `GROUP BY DName`: 根据部门名称进行分组,确保每个部门的统计结果是独立的。 6. `ORDER BY LastChangeTime DESC`: 按照最后人员变动时间从新到旧排序,这样可以将最近变动的部门放在前面。 这个查询返回的结果...

    sql计算班组func.zip_oracle_sql_某个时间班组

    4. **时间区间处理**: 如果班组的划分不是基于连续的时间段,而是基于固定的时间点,例如班组甲乙丙丁分别对应周一至周四、周五和周末,我们可以用`TO_CHAR`函数转换日期为星期几,然后进行匹配。 ```sql SELECT ...

    21天迅速学会sql(比较完整的sql学习手册)

    - **汇总函数**:用于对一组值进行统计计算,如COUNT(计数)、SUM(求和)、AVG(平均值)、MAX(最大值)、MIN(最小值)等。 - **日期/时间函数**:用于处理日期和时间值,如ADD_MONTHS(增加月份)、LAST_DAY...

    Flink基础系列32-Table API和Flink SQL之时间窗口

    时间窗口是一种将连续的数据流分割成离散时间段的方法,这对于统计特定时间范围内的数据特性至关重要。在Flink的Table API和SQL中,时间窗口主要分为两类:分组窗口(Group Windows)和Over Windows。 分组窗口...

    Sqlserver2000经典脚本

    6.1.5 按指定上下限区间进行数据统计的示例.sql │ │ 6.1.6 随机出题的示例.sql │ │ 6.2.1 ROLLUP实现的分级汇总示例(定义各汇总列标题).sql │ │ 6.2.1 ROLLUP实现的分级汇总示例(带排序及汇总列...

Global site tag (gtag.js) - Google Analytics