1. 程式人生 > >Oracle 按時間段分組統計

Oracle 按時間段分組統計

想要按時間段分組查詢,首先要了解level,connect by,oracle時間的加減.
關於level這裡不多說,我只寫出一個查詢語句:

  ---level 是一個偽例
  select level from dual connect by level <=10
  ---結果:1	
	2
	3
	4
	5
	6
	7
	8
	9
	10
select sysdate -1 from dual
----結果減一天,也就24小時
select sysdate-(1/2) from dual
-----結果減去半天,也就12小時
select sysdate-(1/24) from dual
-----結果減去1 小時
select sysdate-((1/24)/12) from dual 
----結果減去5分鐘
select sydate-(level-1) from dual connect by level<=10
---結果是10間隔1天的時間


下面是本次例子:

select dt, count(satisfy_degree) as num from T_DEMO  i ,
(select sysdate - (level-1) * 2 dt
from dual connect by level <= 10) d
where i.satisfy_degree='satisfy_1' and
i.insert_time<dt and i.insert_time> d.dt-2
group by d.dt  


例子中的sysdate - (level-1) * 2得到的是一個間隔是2天的時間
group by d.dt  也就是兩天的時間間隔分組查詢

自己實現例子:

create table A_HY_LOCATE1
(
  MOBILE_NO          VARCHAR2(32),
  LOCATE_TYPE        NUMBER(4),
  AREA_NO            VARCHAR2(32),
  CREATED_TIME       DATE,
  AREA_NAME          VARCHAR2(512),
);

select (sysdate-13)-(level-1)/4 from dual connect by level<=34  --從第一條時間記錄開始(sysdate-13)為表中的最早的日期,“34”出現的分組數(一天按每六個小時分組 就應該為4)

一下是按照每6個小時分組  
select mobile_no,area_name,max(created_time ),dt, count(*) as num from a_hy_locate1  i ,
(select (sysdate-13)-(level-1)/4  dt
from dual connect by level <= 34) d
where i.locate_type = 1 and
i.created_time<dt and i.created_time> d.dt-1/4
group by mobile_no,area_name,d.dt

另外一個方法:

--按六小時分組

select trunc(to_number(to_char(created_time, 'hh24')) / 6),count(*)
  from t_test
 where created_time > trunc(sysdate - 40)
 group by trunc(to_number(to_char(created_time, 'hh24')) / 6)

--按12小時分組

select trunc(to_number(to_char(created_time, 'hh24')) / 6),count(*)
  from t_test
 where created_time > trunc(sysdate - 40)
 group by trunc(to_number(to_char(created_time, 'hh24')) / 6)

相關推薦

Oracle 時間段分組統計 (使用LEVEL)

想要按時間段分組查詢,首先要了解level,connect by,oracle時間的加減.  關於level這裡不多說,我只寫出一個查詢語句: ---level 是一個偽例  selectlevelfrom dual connectbylevel <=10    ---結果:1     2  

Oracle 時間段分組統計

想要按時間段分組查詢,首先要了解level,connect by,oracle時間的加減. 關於level這裡不多說,我只寫出一個查詢語句: ---level 是一個偽例 select level from dual connect by level <=1

Oracle日期分組統計資料

昨天專案突然改了個需求,要求折線圖的資料顯示,必須按照月三天,季度九天來分組統計資料,網上搜索了一堆,差點沒找著相關的!還好找到了類似的,現整理下提供給有需要的大家參考參考! (本人是在Oracle

mysql 時間段分組

SELECT         foodid,nums,sum(quantity) FROM (     SELECT           &

mongodb 計算季度 & 季度分組統計

    計算季度:   db.task.aggregate([{ $match: { "createDate": {$ne: null} } }, { $project: { status: 1, createDate: 1, qu

mongodb aggregate日期分組統計及spring mongo實現

如需轉載請註明出處: mongodb aggregate按日期分組統計及spring mongo實現 實現的需求 傳入毫秒級開始時間戳和結束的時間戳,根據當前狀態currentStatus.status和當前狀態時間currentStatus.datetime進行按日統計,缺少數

記錄一個mysql日期分組統計的查詢

SELECT DATE_FORMAT( deteline, "%Y-%m-%d %H" ) , COUNT( * ) FROM testGROUP BY DATE_FORMAT( deteline, "%Y-%m-%d %H" )  查詢某天: deteline, "%Y

時間分組統計的SQL語句

如下表table1:   日期(exportDate)               數量(amount)    --------------                    -----------   14-2月 -08                       2

Mysql 根據時間戳年月日分組統計(做個收藏)

  create_time時間格式         SELECT DATE_FORMAT(create_time,'%Y%u') weeks,COUNT(id) COUNT FROM role GROUP BY weeks;         SELECT DATE_FO

host 分組統計檢視 | 全方位認識 sys 系統庫

在上一篇《配置表|全方位認識 sys 系統庫》中,我們介紹了sys 系統庫的配置表,但實際上我們大部分人大多數時候並不需要去修改配置表,直接使用sys 系統庫下的檢視來獲取所需的資料即可,sys 系統庫下一共有100多檢視,這些檢視都能夠給我們提供一些什麼樣的資訊呢?本期的內

MySQL DATE_FORMAT用法,周,月,分組統計資料

MySQL  DATE_FORMAT用法: DATE_FORMAT(date,format)  根據format字串格式化date值。下列修飾符可以被用在format字串中:  %M 月名字(January……December) %W 星期名字(Sunday……S

SQL語句 年齡段分組統計人數

create table #t(Uname varchar(10),age int) insert #t select '啊啊',19 union all select '資訊',23 union

Mysql 根據時間戳、時間年月日分組統計

下列修飾符可以被用在format字串中: %M 月名字(January……December) %W 星期名字(Sunday……Saturday) %D 有英語字首的月份的日期(1st, 2nd, 3rd, 等等。) %Y 年, 數字, 4 位 %y 年, 數字, 2 位 %a 縮寫的星期名字(Sun……Sat

[Oracle SQL] 使用rollup分組統計統計結果分組排序顯示的問題

今天想對某些班、課程的掛科人數做統計和小計,使用rollup可以很容易實現這個功能。 比如涉及的成績(all_scores)表結構為 BH 班號 BJMC 班級名稱 KCMC 課程名稱 JD 績點 其中JD為0表示掛科了。我們很容易寫一個分組統計來統計各個班各個課程的掛科

oracle-月、日、時分組查詢統計資料,無資料補零

------月1234567891011select nvl(t1.tvalue, 0) "data1", t2.datevalue "name"from (select sum(t.TSAI03) tvalue, TO_CHAR(t.TSAI01, 'yyyy-mm') timevaluefrom TSA0

mysql日期分組(group by)查詢統計的時候,沒有數據補0的解決辦法

details map對象 有一個 end creat 對象 結果 插入 數據返回 轉載自:http://blog.csdn.net/jie11447416/article/details/50887888 1、案例中的數據結構和數據如下 2、在沒有解決的時候,是這樣的

【SQL Server 2012】倒序存儲“分組統計”結果的臨時表到新建表

lec 訪問 mage 臨時表 聚合函數 ren 查詢 多個 相關 程序預先說明: 本文訪問的數據庫是基於存有RDF三元組的開源數據庫Localyago修改的庫,其中只有一個表,表中有五個屬性:主語subject、謂語predict、賓語object、主語的編號subid,

Oracle 分組統計,抽取每組前十

order by 編號 用戶名 ldb In 行業 partition like ber /**2018年6月14日 潮州ORACEL 統計2017年用電量,按行業分類抽取用電量前十*/select * from (select t.yhbh 用戶編號,

oracle分組統計查詢

分組統計查詢(本次都是使用scott使用者下的表格)知識點 1. 統計函式的使用; 2. 分組統計的查詢的實現; 3. 對分組的資料過濾; * 統計函式(又稱分組函式) 之前學過的count()函式。這個函式主要的作用是統計一張資料表格的資料量的個數。常用函式分共5個:為connt

mysql時間段統計資料 欄位為時間戳

        SELECT FROM_UNIXTIME(create_time,'%Y%u') weeks,COUNT(id) COUNT FROM role GROUP BY weeks;