1. 按照時間段統計的sql語句
我只能大概說一個想法,
創建一個中間表,存放8點-14點 14點-20點 20點-2點 2點-8點 這樣的一個標題及具體的時間段,
然後用這個中間表與biao1根據時間tm進行關聯,就可以把數據與時間段聯繫上。
然後按這個時間段進行了group by ,之後再用 pivot就可以出來了。
2. SQLServer的分時間段統計的SQL語句。
沒看懂a和b二個表的用途,假設對表a統計。
直接統計比較困難,不過你可以先把日期轉換成到最早日期的分鍾數,把分鍾數除以10求整,得到的新值就是每10分鍾一組的了。不過新值需要保存到臨時表,再對臨時表分組統計。
--按上述分析將a表中的f_time轉換為以最早日期為起點的每10分鍾一個值的新列,如間隔8分鍾,新列值為0,18分鍾,新值為1.此列命名為ten,把它們復制到臨時表#tj中。
select floor(datediff(mi,(select min(f_time) from a),optime)/10) ten,f_time,f_val from a into #tj where not a is null order by f_time
--對#tj按ten列分組統計,同時顯示每組的起始日期好截止日期。
select ten,min(f_time) bg,max(f_time) end,sum(f_val) hj_val from #tj group by ten order by ten
--把臨時表刪掉
drop table #tj
3. SQL 時間間隔 可設如1分鍾5分鍾等,查詢相關數據。
假如表名:tbl;時間欄位名:dt
select * from tbl
where dt between cast('2012-10-10 12:01:00' as datetime) and cast('2012-10-11 11:05:00' as datetime) -- 在 2012.10.10.12:1:00 和 2012.10.11.14:5:00 之間
and datediff(minute,cast('2012-10-10 12:01:00' as datetime),dt) %7 = 0 --間隔7分鍾
4. SQL 分時段統計數據條數
做個時間基表 跟數據做個左連接分組統計即可
5. SQL,按5分鍾統計發送數量,SQL語句怎麼寫呀
最簡單方法,把datetime轉成float型(單位整數部分為天),然後乘24*60/5,就是整數部分是5分鍾了,然後取整就行了
用這種方法做,隨便你算幾分鍾的分組都能算
如:
select getdate(),cast(floor(cast(getdate() as float)*24*60/5)*5/60/24 as smalldatetime)
----------------------- -----------------------
2010-09-16 19:19:34.547 2010-09-16 19:15:00
(1 行受影響)
select getdate(),substring(convert(varchar,cast(floor(cast(getdate() as float)*24*60/5)*5/60/24 as smalldatetime),120),12,5)
----------------------- ----------
2010-09-16 19:23:47.340 19:20
(1 行受影響)
那麼你的這個問題
select
substring(convert(varchar,cast(floor(cast(sendtime as float)*24*60/5)*5/60/24 as smalldatetime),120),12,5)
,sum(concount)
from 表名
group by substring(convert(varchar,cast(floor(cast(sendtime as float)*24*60/5)*5/60/24 as smalldatetime),120),12,5)
6. mysql按10分鍾,分組統計數據,如何統計
2
3
4
5
6
7
8
9
10
11
12
13
14
-- time_str '2016-11-20 04:31:11'
-- date_str 20161120
select concat(left(date_format(time_str, '%y-%m-%d %h:%i'),15),'0') as time_flag, count(*) as count from `security`.`cmd_info` where `date_str`=20161120 group by time_flag order by time_flag; -- 127 rows
select round(unix_timestamp(time_str)/(10 * 60)) as timekey, count(*) from `security`.`cmd_info` where `date_str`=20161120 group by timekey order by timekey; -- 126 rows
-- 以上2個SQL語句的思路類似——使用「group by」進行區分,但是方法有所不同,前者只能針對10分鍾(或1小時)級別,後者可以動態調整間隔大小,兩者效率差不多,可以根據實際情況選用
select concat(date(time_str),' ',hour(time_str),':',round(minute(time_str)/10,0)*10), count(*) from `security`.`cmd_info` where `date_str`=20161120 group by date(time_str), hour(time_str), round(minute(time_str)/10,0)*10; -- 145 rows
select concat(date(time_str),' ',hour(time_str),':',floor(minute(time_str)/10)*10), count(*) from `security`.`cmd_info` where `date_str`=20161120 group by date(time_str), hour(time_str), floor(minute(time_str)/10)*10; -- 127 rows (和 date_format 那個等價)
7. sql 根據時間段分組統計數據
把小時、分鍾分別定義變數,循環變化。
8. SQL中,有一個分鍾資料庫,用什麼指令能夠生成小時、天、月統計資料庫
用 分鍾/60 分組 應該就是小時吧
我覺得可以這樣類推
9. Oracle 取過去一個小時每分鍾的數據應該如何寫sql
寫個例子吧
創建表、插入數據:
createtablea
(timedate);
insertintoavalues(to_date(20151208150101,'yyyymmddhh24miss'));
執行:
withtas
(<=60)
selectt.rn-1rn,sum(casewhent.rn-1=to_char(a.time,'mi')then1else0end)fromtleftjoinaont.rn=to_char(a.time,'mi')andto_char(a.time,'yyyy-mm-ddhh24:mi:ss')between
'2015-12-0815:00:00'and'2015-12-0815:59:59'
groupbyt.rn
orderbyt.rn
結果:
其中rn代表分鍾數