oracle日期怎么分組 oracle按月分組查詢

oracle如何按日期分組,底下的代碼如何讓它成功?

GROUP BY TO_CHAR(ORDER_DATE,'YYYYMMDD')是按order_date的年月日是否相同做日期分組,你那代碼執(zhí)行有什么錯誤嗎

創(chuàng)新互聯建站是一家集網站建設,克井企業(yè)網站建設,克井品牌網站建設,網站定制,克井網站建設報價,網絡營銷,網絡優(yōu)化,克井網站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯網需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網站。

oracle 時間字段是年月日時分秒怎么根據年月日分組

年:

group by to_char(to_date(sysdate, 'yyyy-mm-dd hh24:mi:ss'),'yyyy');

月:

group by to_char(to_date(sysdate, 'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm');

group by to_char(to_date(sysdate, 'yyyy-mm-dd hh24:mi:ss'),'yyyymm');

日:

group by to_char(to_date(sysdate, 'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd');

group by to_char(to_date(sysdate, 'yyyy-mm-dd hh24:mi:ss'),'yyyymmdd');

時:

group by to_char(to_date(sysdate, 'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24');

group by to_char(to_date(sysdate, 'yyyy-mm-dd hh24:mi:ss'),'yyyymmddhh24');

分:

group by to_char(to_date(sysdate, 'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi');

group by to_char(to_date(sysdate, 'yyyy-mm-dd hh24:mi:ss'),'yyyymmddhh24mi');

秒:

group by sysdate;

oracle 時間段分組

case when吧

select?sum(case?when?時間?between?'01:01'?and?'03:00'?then?統(tǒng)計字段?else?0?end)?"1-3點",

sum(case?when?時間?between?'03:01'?and?'05:00'?then?統(tǒng)計字段?else?0?end)?"3-5點"

from?表名

舉例了兩個時間段,其他的自己寫吧,有問題追問。

Oracle里面如何讓一段日期按周、月、季度、年分組顯示?。壳蟾呤仲n教,貼出正確sql追加高分!

select distinct to_char(dt, 'yyyy-mm-dd') as years,to_char(dt, 'iw') as week

from (select (to_date('2013-4-15', 'yyyy-mm-dd') + rownum - 1) dtfrom dual connect by rownum = to_date('2013-7-15', 'yyyy-mm-dd') -to_date('2013-4-15', 'yyyy-mm-dd'))

group by to_char(dt, 'iw')

ORDER BY years,week

Oracle數據庫按時間進行分組統(tǒng)計數據的方法

Oracle按不同時間分組統(tǒng)計的sql

如下表table1:

日期(exportDate)

數量(amount)

--------------

-----------

14-2月

-08

20

10-3月

-08

2

14-4月

-08

6

14-6月

-08

75

24-10月-09

23

14-11月-09

45

04-8月

-10

5

04-9月

-10

44

04-10月-10

88

注意:為了顯示更直觀,如下查詢已皆按相應分組排序

1.按年份分組

select

to_char(exportDate,'yyyy'),sum(amount)

from

table1

group

by

to_char(exportDate,'yyyy');

年份

數量

-----------------------------

2009

68

2010

137

2008

103

2.按月份分組

select

to_char(exportDate,'yyyy-mm'),sum(amount)

from

table1

group

by

to_char(exportDate,'yyyy-mm')

order

by

to_char(exportDate,'yyyy-mm');

月份

數量

-----------------------------

2008-02

20

2008-03

2

2008-04

6

2008-06

75

2009-10

23

2009-11

45

2010-08

5

2010-09

44

2010-10

88

3.按季度分組

select

to_char(exportDate,'yyyy-Q'),sum(amount)

from

table1

group

by

to_char(exportDate,'yyyy-Q')

order

by

to_char(exportDate,'yyyy-Q');

季度

數量

------------------------------

2008-1

22

2008-2

81

2009-4

68

2010-3

49

2010-4

88

4.按周分組

select

to_char(exportDate,'yyyy-IW'),sum(amount)

from

table1

group

by

to_char(exportDate,'yyyy-IW')

order

by

to_char(exportDate,'yyyy-IW');

數量

------------------------------

2008-07

20

2008-11

2

2008-16

6

2008-24

75

2009-43

23

2009-46

45

2010-31

5

2010-35

44

2010-40

88

PS:Oracle按時間段分組統(tǒng)計

想要按時間段分組查詢,首先要了解level,connect

by,oracle時間的加減.

關于level這里不多說,我只寫出一個查詢語句:

----level

是一個偽例

select

level

from

dual

connect

by

level

=10

---結果:

1

2

3

4

5

6

7

8

9

10

oracle時間的加減看看試一下以下sql語句就會知道:

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_timedt

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_timedt

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語句 根據操作時間分組

有個問題,要不要精確到時間,比如再有一條記錄為13:05他與12:08的時間沒有到達一小時,可是如果直接按照小時排序的話,這就是一個新的序列。如果需要精確到分鐘并且以每個用戶的第一個時間為準,那就有難度了,因為要判斷每個的開始和結束時間進行分組。,而且每一行都要去判斷。假設,每59分操作一次,那么這一天都是一個分組。

如果不用那么麻煩,直接就是按照小時分組,那么

select 用戶,時間,rank()over(partition by 用戶,substr(時間) order by 時間) from table

我不知道你的時間字段是怎么格式,所以直接寫的substr可能還需要轉化和具體的截取。這里只是寫了一個大概的樣子

當前名稱:oracle日期怎么分組 oracle按月分組查詢
本文來源:http://muchs.cn/article10/hgscdo.html

成都網站建設公司_創(chuàng)新互聯,為您提供網站策劃動態(tài)網站、用戶體驗微信公眾號、手機網站建設、服務器托管

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

微信小程序開發(fā)