真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

oracle數(shù)據(jù)怎么分組,數(shù)據(jù)分組怎么分組

oracle怎么按個數(shù)分組

SELECT MAX(AA.GROUPS), AA.TYPE_ID

公司主營業(yè)務(wù):成都網(wǎng)站建設(shè)、做網(wǎng)站、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出鎮(zhèn)坪免費做網(wǎng)站回饋大家。

FROM (SELECT TRUNC((ROWNUM - 1) / 12) + 1 AS GROUPS,

MAX(A.TYPE_ID) TYPE_ID

FROM TABLENAME A

GROUP BY TRUNC((ROWNUM - 1) / 12) + 1

ORDER BY GROUPS) AA

GROUP BY AA.TYPE_ID

HAVING COUNT(1) 1;

oracle怎么根據(jù)一個數(shù)分組

首先你的starttime是什么類型的,數(shù)字?字符?還是時間?

要出來08:00-08:30這種結(jié)果簡單,只要查詢的時候加一個關(guān)聯(lián)就可以,

比如select starttime||'-'||endtime from table.當(dāng)然試過是時間的字段類型,比如date什么的,那就轉(zhuǎn)換成字符型的,反正現(xiàn)在看來主要是字符型。

再說分組,分組可以用case when手動分組。

按照你給的圖片個人覺得可以這么分

select case when starttime=0800 and endtime=10:00 then 1

when starttime=0900 and endtime=12:00 then 2

when starttime=1330 and endtime=15:30 then 3

when starttime=1530 and endtime=17:30 then 4

end 分組, starttime||'-'||endtime from table

這個語句中的具體寫法,可能會因為數(shù)據(jù)類型的原因什么的,導(dǎo)致語句不能直接用,需要轉(zhuǎn)換一下數(shù)據(jù)類型,但是大體上的意思和寫法就是這樣了。

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

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

如下表table1:

日期(exportDate)

數(shù)量(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

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

1.按年份分組

select

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

from

table1

group

by

to_char(exportDate,'yyyy');

年份

數(shù)量

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

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');

月份

數(shù)量

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

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');

季度

數(shù)量

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

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');

數(shù)量

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

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時間的加減.

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

----level

是一個偽例

select

level

from

dual

connect

by

level

=10

---結(jié)果:

1

2

3

4

5

6

7

8

9

10

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

select

sysdate

-1

from

dual

----結(jié)果減一天,也就24小時

select

sysdate-(1/2)

from

dual

-----結(jié)果減去半天,也就12小時

select

sysdate-(1/24)

from

dual

-----結(jié)果減去1

小時

select

sysdate-((1/24)/12)

from

dual

----結(jié)果減去5分鐘

select

sydate-(level-1)

from

dual

connect

by

level=10

---結(jié)果是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

也就是兩天的時間間隔分組查詢

自己實現(xiàn)例子:

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”出現(xiàn)的分組數(shù)(一天按每六個小時分組

就應(yīng)該為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如何對一個多值字段進(jìn)行分組統(tǒng)計

CREATE??TABLE??info?(

users????varchar(100)

);

INSERT?INTO?info?VALUES('userA@userB@userC');

INSERT?INTO?info?VALUES('userB@userC@userD');

INSERT?INTO?info?VALUES('userC@userD@userE');

COLUMN?"用戶"?FORMAT?A15

SELECT

to_char(strvalue)?as?"用戶",

count(*)?AS?"用戶數(shù)"

FROM

info,

table(fn_split(?info.users,??'@'))

GROUP?BY

to_char(strvalue)

ORDER?BY

1;

用戶????????????????用戶數(shù)

---------------?----------

userA????????????????????1

userB????????????????????2

userC????????????????????3

userD????????????????????2

userE????????????????????1

上面這樣的效果, 是否滿足你的需求?

如果滿足的話, 你再往下看, 下面是 存儲過程的相關(guān)代碼

Oracle?需要首先在數(shù)據(jù)庫中,?創(chuàng)建好?類型?與?函數(shù)。

來實現(xiàn)一個??split?功能的處理。

--?定義一個對象類型.

CREATE?OR?REPLACE?TYPE?ty_row_str_split?as?object?(strValue?VARCHAR2?(4000));

/

--?定義一個?表/數(shù)組類型,?內(nèi)容是前面定義的那個對象.

CREATE?OR?REPLACE?TYPE?ty_tbl_str_split?IS?TABLE?OF?ty_row_str_split;

/

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

--?字符分割函數(shù).

--?參數(shù)1:??被分割的源字符串

--?參數(shù)2:??用于拆分的字符串。

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

CREATE?OR?REPLACE?FUNCTION?fn_split(

p_str???????IN?VARCHAR2,

p_delimiter?IN?VARCHAR2)

RETURN?ty_tbl_str_split?IS

j?????????INT?:=?0;

i?????????INT?:=?1;

--?被分割的源字符串?的長度.

len???????INT?:=?0;

--?分隔字符串的長度

len1??????INT?:=?0;

--?暫存的中間每一個單元的文本信息.

str???????VARCHAR2(4000);

--?預(yù)期返回結(jié)果.

str_split?ty_tbl_str_split?:=?ty_tbl_str_split();

BEGIN

--?被分割的源字符串?的長度.

len???:=?LENGTH(p_str);

--?分隔字符串的長度.

len1?:=?LENGTH(p_delimiter);

--?遍歷?被分割的源字符串.

WHILE?j??len?LOOP

--?在被分割的源字符串中,?查詢?分隔字符串.

j?:=?INSTR(p_str,?p_delimiter,?i);

IF?j?=?0?THEN

--?j=0?意味著沒有找到.

??--?可以理解為是查詢到最后一個單元了.

??--?設(shè)置?j?:=?len,?讓外部的循環(huán)處理可以結(jié)束了.

j??:=?len;

--?獲取最后一個單元的內(nèi)容.

str?:=?SUBSTR(p_str,?i);

--?結(jié)果追加一行.

str_split.EXTEND;

--?設(shè)置結(jié)果內(nèi)容.

str_split(str_split.COUNT)?:=?ty_row_str_split(strValue?=?str);

IF?i?=?len?THEN

EXIT;

END?IF;

ELSE

--?如果在被分割的源字符串中,找到了?分隔字符串.

--?首先,獲取分割的內(nèi)容.

str?:=?SUBSTR(p_str,?i,?j?-?i);

--?然后設(shè)置索引,?下一次再查找的時候,從指定的索引位置開始(不是從0開始找了)

i?:=?j?+?len1;

--?結(jié)果追加一行.

str_split.EXTEND;

--?設(shè)置結(jié)果內(nèi)容.

str_split(str_split.COUNT)?:=?ty_row_str_split(strValue?=?str);

END?IF;

END?LOOP;

RETURN?str_split;

END?fn_split;

/

函數(shù)創(chuàng)建完畢以后,可以開始做查詢的處理.

SQL?select?to_char(strvalue)?as?Value?from?table(fn_split('aa,bb,cc',','));

VALUE

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

aa

bb

cc

oracle數(shù)據(jù)庫的分組查詢的語句怎么寫

oracle數(shù)據(jù)庫的分組查詢語句,主要是根據(jù)一個字段,使用關(guān)鍵字group

by來分組,如下代碼:

select to_char(date_column, 'yyyy-Q'),count(*)

from xxx

where date_column between '01-Jan-2007' and '31-Dec-2009'

group by to_char(date_column, 'yyyy-Q')//分組查詢

oracle中的分組函數(shù)有哪些,具體怎么用?

常用的函數(shù)有:

1、COUNT ()返回查尋的行數(shù)

例如:select count(*) from table;

2、MAX() 返回表達(dá)式的最大值

例如:select a, max(b) from table group by a;

3、MIN() 返回表達(dá)式的最小值

例如:select a, min(b) from table group by a;

4、SUM() 返回表達(dá)式的總合

例如:select a, sum(b) from table group by a;

5、AVG() 返回表達(dá)式的平均值

例如:select a, avg(b) from table group by a。

函數(shù)

函數(shù)在數(shù)學(xué)上的定義:給定一個非空的數(shù)集A,對A施加對應(yīng)法則f,記作f(A),得到另一數(shù)集B,也就是B=f(A).那么這個關(guān)系式就叫函數(shù)關(guān)系式,簡稱函數(shù)。


本文題目:oracle數(shù)據(jù)怎么分組,數(shù)據(jù)分組怎么分組
文章源于:http://weahome.cn/article/dsissdd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部