博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL按照日、周、月、年、时间段统计数据
阅读量:6882 次
发布时间:2019-06-27

本文共 2135 字,大约阅读时间需要 7 分钟。

--按日
select
sum
(consume),
day
([
date
])
from
consume_record
where
year
([
date
]) =
'2006'
group
by
day
([
date
])
 
--按周quarter
select
sum
(consume),datename(week,[
date
])
from
consume_record
where
year
([
date
]) =
'2006'
group
by
datename(week,[
date
])
 
--按月
select
sum
(consume),
month
([
date
])
from
consume_record
where
year
([
date
]) =
'2006'
group
by
month
([
date
])
 
--按季
select
sum
(consume),datename(quarter,[
date
])
from
consume_record
where
year
([
date
]) =
'2006'
group
by
datename(quarter,[
date
])
 
--按年 
select
sum
(consume),
year
([
date
])
from
consume_record
where 
group
by
year
([
date
])
 
--这个按每五分钟的
[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

转载于:https://www.cnblogs.com/compete/p/3947347.html

你可能感兴趣的文章
windows下安装ubuntu,并用win引导ubuntu启动
查看>>
java开发常用工具
查看>>
在VMware Vcenter添加一块网卡后,启动虚机找不到网卡,发现有一个ens38(redhat7.5)...
查看>>
static 关键字和类的加载顺序
查看>>
安卓ListView基础应用
查看>>
【原创】PostgreSQL 快速创建空表TIPS
查看>>
利用PowerBI结合SCOM展示数据报表
查看>>
中学时代的记忆---老师的黑板
查看>>
Horizon View 6-View Connection Server部署⑴
查看>>
iptables 实战演练
查看>>
Python 学习笔记 - 线程(线程锁,信标,事件和条件)
查看>>
RHEL6基础四十一之selinux和iptables基础
查看>>
数据结构之单链表在第i个元素之前插入元素的算法
查看>>
Exchange Server 运维管理02:邮箱数据库存储原理
查看>>
Exchange Server2013 系列十:证书的配置
查看>>
Cygwin新手必读
查看>>
52.本地VMware环境虚拟机的异地(Azure)容灾(下)
查看>>
也谈谈Apache与Nginx
查看>>
Word中使用正则表达式进行查找和替换
查看>>
jquery.autocomplete 搜索文字提示
查看>>