❶ 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
;