當前位置:首頁 » 編程語言 » sql查詢按時間分組半小時
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql查詢按時間分組半小時

發布時間: 2023-03-02 03:21:47

Ⅰ t-sql中有關時間分組的問題:我有一個時間列,datetime類型的, 我想按每天的小時去分組

提供一個思路,實時上我們也一般這么干
1.將datetime轉類型為字元串 ,按照年月日時分秒
2,截取字元串,取年月日時並分組
3.完成分組後,轉換回來

在ORACLE里,是類似如下的代碼

select to_date(substr( to_char(datetime,'yyyy-mm-dd-hh-mi-ss'),1,13),'yyyy-mm-dd-hh')from table t
group by substr( to_char(datetime,'yyyy-mm-dd-hh-mi-ss'),1,13)

Ⅱ SQL按時間分組查詢

select MONTH(B),sum(A) FROM tt GROUP BY MONTH(B)

Ⅲ 有這么一個表,三個聯合主鍵,想用sql語句將數據分組,其中一列是時間,想按小時分組,怎麼寫SQL語句

select * from 表名 group by to_char(時間列名,'hh')

Ⅳ sql 時間段分組統計查詢

有點點麻煩,需要先構建一個關於時間段的虛表

先找到你訂單的最早的時間,然後找一個行數足夠多的表

假設你的表名叫s,也就是你羅列出數據這個表

withtas
(selectrow_number()over(orderbyid)-1rnfromsheet2)--sheet2替換成你行數足夠多的表,還有orderbyid里的id你隨便替換你表裡的一個欄位
selectdateadd(hour,10+24*t.rn,cast('2013/3/1'asdatetime))begin_time,--2013/3/1換成你表裡的最小時間
dateadd(hour,10+24*(t.rn+1),cast('2013/3/1'asdatetime))end_time,
count(*)訂單數量
fromt,s--這個s替換成你自己的表名
wherecast(s.時間)>=dateadd(hour,10+24*t.rn,cast('2013/3/1'asdatetime))
andcast(s.時間)<dateadd(hour,10+24*(t.rn+1),cast('2013/3/1'asdatetime))

Ⅳ 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 按時間分類查詢數據,比如:按一天時間段分類查詢訪問次數查詢語句怎麼寫舉個例子

如果你的時間段是均勻的,比如一天24小時內,每4個小時為一個周期,那麼可以這么寫

select coutn(ID) from T group by trunc (to_char(time,'hh24') / 4)

--to_char(time,'hh24')是取出小時部分,trunc是求商,把小時部分除以4,則每4個小時內的都會在一起

如果時間段不均勻,那麼只能每個時間段單獨寫了
示例
select count(ID) from T where to_char(time,'hh24')<結束時間 and to_char(time,'hh24') >=開始時間

Ⅶ Oracle按半小時分組的sql

想到一個辦法,不過還要再套一層才行。
利用case when將原表稍作改動,就是類似case when to_char(時間,'mi')<30 then 'A' else 'B' end 分段欄位
這樣就會出現一個新欄位,欄位是由A或B組成的,然後分組的時候,用時間(到小時,就是你的『YYYY-mm-dd HH24『)+AB分段欄位 組合分組,這樣就是半小時一分組了。

Ⅷ sql 實現按日期分組

需要用convert函數轉換日期格式,並且需要用group
by來實現分組。
1、創建測試表及插入數據:
create table test
(tdate datetime,
sal int);
insert into test values ('2015-09-23 12:22:22',100);
insert into test values ('2015-09-23 01:54:34',456);
insert into test values ('2015-09-24 14:32:35',45);
insert into test values ('2015-09-24 22:23:43',67);
insert into test values ('2015-09-25 19:43:22',234);
insert into test values ('2015-09-25 08:14:12',67);
insert into test values ('2015-09-26 04:53:34',45);
insert into test values ('2015-09-26 09:46:54',78);2、執行sql語句:
select convert(varchar(10),tdate,120) tdate,sum(sal) sal from test group by convert(varchar(10),tdate,120);3、執行結果: