当前位置:首页 » 编程语言 » sql按小时为单位统计
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql按小时为单位统计

发布时间: 2022-03-01 06:42:58

sql 按照小时分组查询并统计

--模拟销售的表.
CREATETABLE#temp(
[销售时间]datetime,
[销量]int,
[实销]int
)
go


--由于成本与毛利,我估计应该是在另外一个表里面的,这里就不模拟了
INSERTINTO#temp
--9点的
SELECT'2013-07-1609:55:15',9,900UNIONALL
--10点的
SELECT'2013-07-1610:15:15',1,100UNIONALL
SELECT'2013-07-1610:25:15',15,1500UNIONALL
SELECT'2013-07-1610:35:15',10,1000UNIONALL
--11点的
SELECT'2013-07-1611:15:15',1,100UNIONALL
SELECT'2013-07-1611:25:15',2,200UNIONALL
SELECT'2013-07-1611:35:15',3,300UNIONALL
SELECT'2013-07-1611:45:15',4,400UNIONALL
SELECT'2013-07-1611:55:15',5,500UNIONALL
--其他的.
SELECT'2013-07-1612:15:15',12,1200UNIONALL
SELECT'2013-07-1613:15:15',13,1300UNIONALL
SELECT'2013-07-1614:15:15',14,1400UNIONALL
--中间缺少15点与16点的
SELECT'2013-07-1617:15:15',17,1700UNIONALL
SELECT'2013-07-1618:15:15',18,1800;
goSELECT
ISNULL(Convert(varchar(2),sv.number)+'-'+Convert(varchar(2),sv.number+1),'合计')AS[销售时段],
SUM([销量])AS[销量],
SUM([实销])AS[实销],
(SELECTSUM([实销])FROM#tempt2WHEREDATEPART(hh,t2.[销售时间])<=ISNULL(sv.number,23))AS[累计实销]
FROM
master..spt_valuessv
JOIN#tempt
ON(sv.number=DATEPART(hh,t.[销售时间]))
WHERE
sv.type='P'
ANDsv.number>=9
ANDsv.number<20
GROUPBY
sv.numberWITHrollup
GO


销售时段销量实销累计实销
--------------------------------------
9-109900900
10-112626003500
11-121515005000
12-131212006200
13-141313007500
14-151414008900
17-1817170010600
18-1918180012400
合计1241240012400

(9行受影响)




这样行么?

❷ sql按日期时间统计次数的语句怎么写

select 卡号, count(消费日) 消费天数
from (select distinct 卡号, Day(消费时间) 消费日 from 消费明细)
GROUP by 卡号

❸ sql中的步长统计,例如一天跑一次的sql脚本,要实现按小时步长来统计数据

楼主表达不清晰,
按小时执行用JOB,查看脚本执行时间
SET STATISTICS TIME ON
显示剖析、编译和执行每个陈述式所需要的毫秒数。

❹ mysql根据时间段查询按小时统计

这个要有个前提的
要求你那个 MySQL 里面, time 那一列的数据类型, 是 DATETIME 或者 TIME
如果数据类型是 DATE , 那就彻底没办法了:

注:MySQL 日期时间数据类型

DATE
日期。支持的范围为’1000-01-01’到’9999-12-31’。
MySQL以’YYYY-MM-DD’格式显示DATE值,但允许使用字符串或数字为DATE列分配值。

DATETIME
日期和时间的组合。
支持的范围是’1000-01-01 00:00:00’到’9999-12-31 23:59:59’。
MySQL以’YYYY-MM-DD HH:MM:SS’格式显示DATETIME值,但允许使用字符串或数字为DATETIME列分配值。

TIME
时间。范围是’-838:59:59’到’838:59:59’。
MySQL以’HH:MM:SS’格式显示TIME值,但允许使用字符串或数字为TIME列分配值。

SQL 语句的 WHERE 部分可以这么写

WHERE
Hour( time ) = 1
OR ( Hour( time ) = 2 AND MINUTE( time) = 0 AND Second (time ) = 0 )

❺ sql查询一天每个小时的数据量的统计语句怎么写

with data as
( select 时间, convert(int, 第二列) as 小时, 数量 from 表格)
select 时间, 小时, sum(数量)
from data
group by 时间, 小时

❻ 请教如何用SQL对每个小时内的数据进行统计求高手指点,谢谢!

select '2011-01-23 00:23:34' 日期 ,'a' 内容 into #temp union
select '2011-01-23 00:35:31','a' union
select '2011-01-23 02:44:34','a' union
select '2011-01-23 02:52:12','b' union
select '2011-01-23 04:23:34','c' union
select '2011-01-23 04:11:03','d' union
select '2011-01-23 04:05:34','c' union
select '2011-01-23 05:23:21','b'

select convert(varchar(13),日期,120),count(内容)
from #temp
group by convert(varchar(13),日期,120)

select convert(varchar(13),日期,120),count(distinct 内容)
from #temp
group by convert(varchar(13),日期,120)

❼ sql 按时间统计

当然可以;
用行转列就行了

--静态写法
select 单位,
sum(case when year(时间)=2005 and datepart(q,时间)=1 then 值 else 0 end) as 2005一季,
sum(case when year(时间)=2005 and datepart(q,时间)=2 then 值 else 0 end) as 2005一季,
..........
from table
group by 单位

竖向显示时;

select 单位,
case when year(时间)=2005 and datepart(q,时间)=1 then '2005年第一季'
when when year(时间)=2005 and datepart(q,时间)=2
then '2005年第二季'
..........end as 显示季,
sum(值) as 显示值
from table
group by 单位,case when year(时间)=2005 and datepart(q,时间)=1 then '2005年第一季'
when when year(时间)=2005 and datepart(q,时间)=2
then '2005年第二季'
..........end

❽ 求一个按小时筛选的sql语句

以一小时为一组:
select * from 表名 where 时间列名称 > dateadd(Hour,-1,getDate())

❾ sql查询如何按每个小时查询那个时间段的总数

1、新建JUnit test。

❿ SQL 统计 一段时间 按每小时统计 记录的数量

select count(distinct id) cnt , substr(time,1,13) hours
from mytable a
group by substr(time,1,13)
order by 2
;