成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

oracle如何實現(xiàn)分組,oracle數(shù)據(jù)庫分組函數(shù)

oracle group by 2列 怎么分組的

首先按照2列進行排序,相同的作為一組,比如:

成都創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站建設(shè)、做網(wǎng)站與策劃設(shè)計,洛浦網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10余年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:洛浦等地區(qū)。洛浦做網(wǎng)站價格咨詢:18982081108

按性別和所在系分組后:

關(guān)于oracle怎么做多次分組

以NO字段為主,進行分組。

select a.no,sum(a.金額) from table a group by a.no

同一個NO,會對應(yīng)不同的姓名。

select a.no,a.姓名,sum(a.金額) from table a group by a.no,a.姓名

看不懂

目標(biāo)語句:當(dāng)收費醒目包含‘鹽’這一項,則統(tǒng)計no='10' 且 姓名=‘張三’,所有收費項目對...

select a.項目,sum(a.金額) from table a where a.收費項目= '1' and a.no = '10' and a.姓名=‘張三’ group by a.項目

在oracle里 group by 分組是怎么回事 為什么有時候不加group by說不是單組分組函數(shù)?

概述

今天主要分享下Oracle數(shù)據(jù)庫分組函數(shù)group by 、 rollup、cude、grouping 、grouping sets的常用用法,以下以O(shè)racle自帶schema做演示。

1、group by的使用

--根據(jù)DEPTNO和JOB進行分組。求相同DEPTNO,相同JOB的員工工資總和。

SELECT E.DEPTNO,E.JOB,SUM(E.SAL) FROM EMP E GROUP BY E.DEPTNO,E.JOB ORDER BY E.DEPTNO;

2、group by 配合rollup的使用

rollup()--可以使用一個或者多個參數(shù)。意思是從右向左進行數(shù)據(jù)的匯總統(tǒng)計,并生成一行,rollup是個統(tǒng)計函數(shù)。

以下是根據(jù)分組情況進行統(tǒng)計,最終進行全部匯總。

(1)簡單的使用rollup--生成一行新數(shù)據(jù)。(要生成新的一行數(shù)據(jù),還可以使用UNION ALL)

SELECT D.DUMMY FROM DUAL D GROUP BY ROLLUP(D.DUMMY);

(2)先根據(jù)E.DEPTNO,E.JOB進行分組,然后從右向左

SELECT E.DEPTNO,E.JOB,SUM(E.SAL) FROM EMP E GROUP BY ROLLUP(E.DEPTNO,E.JOB) ORDER BY E.DEPTNO;

針對以上的使用ROLLUP的結(jié)果的理解:

a:首先根據(jù)GROUP BY E.DEPTNO,E.JOB查詢出9條數(shù)據(jù)(除4,8,12,13外),在根據(jù)rollup的定義,從右向左,對ROLLUP中的參數(shù)進行小計

首先根據(jù)JOB(對所有的JOB進行匯總),匯總出4,8,12行,在根據(jù)E.DEPTNO(對所有的DEPTNO進行匯總),匯總出第十三行數(shù)據(jù)。

(3) 特殊情況

SELECT E.DEPTNO,E.JOB,SUM(E.SAL) FROM EMP E GROUP BY ROLLUP(E.JOB,E.DEPTNO) ORDER BY E.DEPTNO;

理解:首先根據(jù)GROUP BY E.DEPTNO,E.JOB查詢出前九條數(shù)據(jù),其次對E.DEPTNO進行匯總,但是必須考慮JOB,也就是相同的JOB,的所有的工資總和,所以出現(xiàn)下面五條數(shù)據(jù)。

3、group by 配合cube的使用

SELECT E.DEPTNO,E.JOB,SUM(E.SAL) FROM EMP E GROUP BY CUBE(E.DEPTNO,E.JOB) ORDER BY E.DEPTNO;

理解:CUBE會對條件中的每一個條件進行單獨的匯總:即對單獨的列進行匯總

GROUP BY CUBE(E.DEPTNO,E.JOB)首先根據(jù):GROUP BY E.DEPTNO,E.JOB查詢數(shù)據(jù),其次對E.JOB進行匯總(不考慮DEPTNO,單獨匯總,而ROLLUP是在同一個DEPTNO下面)再對E.DEPTNO進行匯總,最后全部匯總。

cube(a,b) 統(tǒng)計列包含:(a,b)、(a)、(b)、()

cube(a,b,c) 統(tǒng)計列包含:(a,b,c)、(a,b)、(a,c)、(b,c)、(a)、(b)、(c)、()

4、GROUPING 的使用

GROUPING函數(shù)可以接受一列,返回0或者1。如果列值為空,那么GROUPING()返回1;如果列值非空,那么返回0。GROUPING只能在使用ROLLUP或CUBE的查詢中使用。當(dāng)需要在返回空值的地方顯示某個值時,GROUPING()就非常有用。

SELECT GROUPING(E.DEPTNO), E.DEPTNO,E.JOB,SUM(E.SAL) FROM EMP E GROUP BY ROLLUP(E.DEPTNO,E.JOB) ORDER BY E.DEPTNO;

可以使用decode或者case函數(shù)進行轉(zhuǎn)換這種不友好的顯示:

SELECT

CASE WHEN grouping(E.DEPTNO) = 1

THEN '總計'

ELSE E.DEPTNO || ''

END AS 部門,

CASE WHEN grouping(E.JOB) = 1 AND grouping(E.DEPTNO) = 0

THEN '小計'

ELSE E.JOB

END AS 工作種類,

SUM(E.SAL) FROM EMP E GROUP BY ROLLUP(E.DEPTNO,E.JOB)

ORDER BY E.DEPTNO;

SELECT DECODE(GROUPING(E.DEPTNO), 1, '總計', E.DEPTNO) AS 部門,

CASE

WHEN GROUPING(E.JOB) = 1 AND GROUPING(E.DEPTNO) = 0 THEN

'小計'

ELSE

E.JOB

END AS 工作種類,

SUM(E.SAL)

FROM EMP E

GROUP BY ROLLUP(E.DEPTNO, E.JOB)

ORDER BY E.DEPTNO;

5、grouping sets提供了指定匯總集合條件的功能

根據(jù)E.DEPTNO,E.JOB分別匯總數(shù)據(jù)。

SELECT E.DEPTNO,E.JOB,SUM(E.SAL) FROM EMP E GROUP BY GROUPING SETS(E.DEPTNO,E.JOB);

覺得有用的朋友多幫忙轉(zhuǎn)發(fā)哦!后面會分享更多devops和DBA方面的內(nèi)容,感興趣的朋友可以關(guān)注下~

Oracle數(shù)據(jù)庫按時間進行分組統(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數(shù)據(jù)庫的分組查詢的語句怎么寫

1.打開plsql并轉(zhuǎn)到登錄頁面。

2.以管理員身份登錄數(shù)據(jù)庫。

3.登錄后,創(chuàng)建一個新的SQL窗口。

4,輸入,以下語句選擇a.file#,a.name,a.bytes / 1024/1024 CurrentMB,ceilHWM * a.block_size / 1024/1024Resizeto,a.bytes? -? HWM * a .block_size / 1024/1024 releaseMB;

5.單擊“執(zhí)行”按鈕以執(zhí)行查詢操作。

6,查詢后,可以在查詢結(jié)果中看到每個數(shù)據(jù)庫文件的具體路徑。

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ù)類型,但是大體上的意思和寫法就是這樣了。

文章標(biāo)題:oracle如何實現(xiàn)分組,oracle數(shù)據(jù)庫分組函數(shù)
網(wǎng)站地址:http://jinyejixie.com/article40/dsdjgeo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、定制網(wǎng)站虛擬主機、做網(wǎng)站域名注冊、響應(yīng)式網(wǎng)站

廣告

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

外貿(mào)網(wǎng)站制作
托克逊县| 牙克石市| 应城市| 长宁县| 汨罗市| 大洼县| 揭阳市| 长白| 闸北区| 黄陵县| 芜湖县| 绥宁县| 明星| 临城县| 城固县| 吉隆县| 甘德县| 大邑县| 剑川县| 宜州市| 株洲县| 江永县| 张北县| 大英县| 平舆县| 九龙城区| 三台县| 肇州县| 咸阳市| 阿城市| 政和县| 遵义县| 肃宁县| 睢宁县| 襄樊市| 天峻县| 莎车县| 托里县| 晋州市| 巴彦淖尔市| 玉龙|