站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        一起聊聊Oracle高級查詢(實(shí)例詳解)

        本篇文章給大家?guī)砹岁P(guān)于Oracle高級查詢的相關(guān)知識,其中包括了分組查詢、多表查詢和子查詢,希望對大家有幫助。

        一起聊聊Oracle高級查詢(實(shí)例詳解)

        Oracle高級查詢

        高級查詢在數(shù)據(jù)庫的開發(fā)過程中應(yīng)用廣泛,從分組查詢、多表查詢和子查詢?nèi)齻€方面介紹Oracle的高級查詢。

        分組查詢

        分組查詢是按照一定的規(guī)則進(jìn)行分組,分組以后數(shù)據(jù)會聚合,需要使用聚合函數(shù),但是使用聚合函數(shù)不一定要分組,分組的關(guān)鍵字是group by。

        常用的聚合函數(shù)有:最大值max(),最小值min(),平均值avg(),總和sum(),統(tǒng)計(jì)個數(shù)count()

        count函數(shù)使用列名時會自動忽略空值

        一起聊聊Oracle高級查詢(實(shí)例詳解)

        nvl函數(shù)可以防止count自動忽略空值,它的作用是當(dāng)comm為空時返回0,因?yàn)?是非空,所以會進(jìn)入統(tǒng)計(jì)總數(shù)。

        一起聊聊Oracle高級查詢(實(shí)例詳解)

        group by子查詢

        在select 列表中所有未包含在聚合函數(shù)中的列都應(yīng)該包含在group by子句中。

        單列分組

        求每個部門的平均工資,顯示部門號,部門的平均工資。

        select deptno,avg(sal) from emp group by deptno order by deptno

        多列分組

        按部門,不同職位,統(tǒng)計(jì)員工的工資總和

        select detpno,job,sum(sal) from emp group by deptno,job order by deptno

        過濾分組

        having子句的使用

        where與having的區(qū)別

        • where子句中不能使用聚合函數(shù),先過濾后分組
        • having子句中可以使用聚合函數(shù),先分組后過濾

        注意:從SQL優(yōu)化的角度上看,盡量使用where,因?yàn)閣here使得分組記錄數(shù)大大降低,從而提高效率。

        求平均工資大于2000的部門

        select deptno,avg(sal) from emp where(avg(sal)) > 2000 group by deptno

        一起聊聊Oracle高級查詢(實(shí)例詳解)

        where子句中不能使用聚合函數(shù),所以報(bào)錯,改成having xxx子句即可。

        select deptno,avg(sal) from emp group by deptno having(avg(sal)) > 2000

        在分組查詢中使用order by

        求每個部門的平均工資,顯示部門號,部門的平均工資,按照工資升序排列。

        select deptno,avg(sal) from emp group by deptno order by avg(sal)

        也可以按列的別名排序

        select deptno,avg(sal) avgsal from emp group by deptno order by avgsal

        還可以按列的序號排序,平均工資是第2列

        select deptno,avg(sal) from emp group by deptno order by 2

        降序排列加上desc即可

        select deptno,avg(sal) from emp group by deptno order by 2 desc

        分組函數(shù)的嵌套

        求部門平均工資的最大值

        select max(avg(sal)) from emp group by deptno

        group by語句增強(qiáng)

        主要用在group by語句報(bào)表功能

        每個部門,安裝不同職位,求工資總和,部門小結(jié),總結(jié)。

        一起聊聊Oracle高級查詢(實(shí)例詳解)

        可以使用rollup函數(shù)

        select deptno,job,sum(sal) from emp group by rollup(deptno,job)

        一起聊聊Oracle高級查詢(實(shí)例詳解)

        再設(shè)置一下顯示格式,break on deptno表示相同的部門號只顯示一個,skip 1表示不同的部門號之間空1行。

        一起聊聊Oracle高級查詢(實(shí)例詳解)

        完善報(bào)表顯示

        增加標(biāo)題,頁碼等

        ttitle col 15 ‘我的報(bào)表’ col 35 sql.pno

        設(shè)置標(biāo)題,空15列顯示我的報(bào)表,然后空35列顯示頁碼

        col deptno heading 部門號

        col job heading 職位

        col sum(sal) heading 工資總額

        以上3行設(shè)置列標(biāo)題

        break on deptno skip 1

        設(shè)置顯示格式,相同的部門號只顯示一個,不同部門號之間空1行

        將這些設(shè)置保存到一個sql文件(注意要改成ANSI編碼,否則會出現(xiàn)亂碼并且設(shè)置無效),然后通過get命令讀取執(zhí)行。再次執(zhí)行查詢語句,得到如下報(bào)表。如果出現(xiàn)了多頁,為了顯示美觀,可以設(shè)置一頁顯示

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 99国产精品国产精品九九| 亚洲午夜精品一区二区| 97久久综合精品久久久综合| 精品久久久无码中文字幕天天| 2021国产精品视频| 中文成人无字幕乱码精品区| 国产精品成人精品久久久| 国产精品ⅴ无码大片在线看| 一本一本久久a久久精品综合麻豆| 999久久久国产精品| 国内精品九九久久久精品| 合区精品久久久中文字幕一区 | 国产vA免费精品高清在线观看| 久久精品国产亚洲av麻豆色欲| 无码人妻精品一区二区蜜桃AV| 国产色精品vr一区区三区| 777国产盗摄偷窥精品0OOO| 99久久精品国产免看国产一区| 久久国产精品一国产精品金尊| 亚洲精品无码久久久| 国产精品亚洲综合专区片高清久久久 | 国产精品天天影视久久综合网| 精品一区二区三区无码免费视频| 曰韩精品无码一区二区三区| 亚洲国产精品无码久久久久久曰| 欧美精品免费专区在线观看| 鲸鱼传媒绿头鱼实验室之炮机测评日韩精品一级毛 | 国产精品免费久久| 国产精品亚洲w码日韩中文| 人精品影院| 国产精品无码DVD在线观看| 国产精品午夜国产小视频 | 国产高清在线精品一区二区 | 久久精品亚洲日本波多野结衣| 精品无码人妻一区二区三区| 精品视频无码一区二区三区 | 996久久国产精品线观看| 国产精品99久久久久久人| 国内精品久久久久| 亚洲国产成人久久精品动漫| 伊人久久精品线影院|