select查詢之五:分析函式在查詢的運用
以下就介紹幾個分析函式的例子。
基於TOP N:
1、資料背景表sc:
SQL> select * from sc;
SNO CNO GRADE
---------- ---------- ----------
1 1 91
1 2 92
1 3 93
2 1 88
2 2 92
2 3 99
3 1 65
3 2 75
3 3 85
4 1 80
4 2 88
SNO CNO GRADE
---------- ---------- ----------
4 3 93
12 rows selected.
2、獲取所有成績的top-3:
SQL> select grade
2 from(select grade from sc
3 order by grade desc)
4 where rownum<=3;
GRADE
----------
99
93
93
3、每門課程成績的前三名;(注意:如果遇到了相同成績的情況,改如何考慮?):
SQL> select * from(
2 select sno,cno,grade,row_number() over
3 (partition by cno order by grade desc)
4 as rn from sc)
5 where rn <> 4;
SNO CNO GRADE RN
---------- ---------- ---------- ----------
1 1 91 1
2 1 88 2
4 1 80 3
1 2 92 1
2 2 92 2
4 2 88 3
2 3 99 1
4 3 93 2
1 3 93 3
9 rows selected.
4、查詢每門課程成績前三的資訊:
SQL> select * from(
2 select sno,cno,grade,dense_rank() over
3 (partition by cno order by grade desc)
4 as rn from sc)
5 where rn <> 4;
SNO CNO GRADE RN
---------- ---------- ---------- ----------
1 1 91 1
2 1 88 2
4 1 80 3
1 2 92 1
2 2 92 1
4 2 88 2
3 2 75 3
2 3 99 1
4 3 93 2
1 3 93 2
3 3 85 3
11 rows selected.
5、請查詢出scott.emp表中根據工資(SAL欄位)從多到少排名,工資位於第5-第10的記錄:
SQL> select * from
2 (select sal,row_number() over(order by sal desc)
3 as rn
4 from emp)
5 where rn >=5
6 and rn <=10;
SAL RN
---------- ----------
2850 5
2450 6
1600 7
1500 8
1300 9
1250 10
6 rows selected.
擴充:
1》cube函式按照月份,地區進行收入彙總
select earnmonth, area, sum(personincome)
from earnings
group by cube(earnmonth,area)
order by earnmonth,area nulls last;
2》rollup函式按照月份,地區統計收入
select earnmonth, area, sum(personincome)
from earnings
group by rollup(earnmonth,area);
3》本文中還運用到了connect by rownum,這個引數是基於資料庫表中的rowid進行查詢的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31392094/viewspace-2125910/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL講義第 47 講——select 查詢之查詢練習(五)MySql
- Solr複雜查詢一:函式查詢Solr函式
- C++ 逆向之 main 函式的查詢C++AI函式
- MySQL講義第27講——select 查詢之自連線查詢MySql
- Python—Django:關於在Django框架中對資料庫的查詢函式,查詢集和關聯查詢PythonDjango框架資料庫函式
- SQL查詢中用到的函式SQL函式
- PostgreSQL 查詢替換函式SQL函式
- sql查詢更新update selectSQL
- 二分查詢函式的使用函式
- Java-MySql-函式、多表查詢JavaMySql函式
- SQLServer DML操作阻塞SELECT查詢SQLServer
- MySQL 查詢效能分析之 ExplainMySqlAI
- pgsql查詢優化之模糊查詢SQL優化
- 一條select的查詢的過程
- SQL查詢的:子查詢和多表查詢SQL
- MySQL入門系列:查詢簡介(五)之子查詢MySql
- SQL SERVER死鎖查詢,死鎖分析,解鎖,查詢佔用SQLServer
- MySQL之連線查詢和子查詢MySql
- DS靜態查詢之順序查詢
- c++字串查詢函式實現C++字串函式
- 二分查詢(函式實現)函式
- MySQL慢查詢分析工具之mysqldumpslowMySql
- 在 with 查詢中只查詢個別欄位
- DMSFrame 之查詢表示式用法(一)
- js.函式parseQuery用於解析url查詢引數JS函式
- MySQL入門系列:查詢簡介(三)之表示式和函式MySql函式
- SQL 查詢並不是從 SELECT 開始的SQL
- 查詢皮膚中如何實現兩個 select 下拉框的關聯查詢?
- group by,having查詢 ”每**“的查詢
- 【資料庫】PostgreSQL中使用`SELECT DISTINCT`和`SUBSTRING`函式實現去重查詢資料庫SQL函式
- 秒級查詢之開源分散式SQL查詢引擎Presto實操-上分散式SQLREST
- 二、mybatis查詢分析MyBatis
- mongodb慢查詢分析MongoDB
- PHP 查詢、擷取字串函式詳解PHP字串函式
- PostgreSQL函式:返回表查詢結果集SQL函式
- mysql-分組查詢-子查詢-連線查詢-組合查詢MySql
- 10.2 查詢地址:&運算子
- UserService 查詢使用者查詢許可權 isGlobalQuery分析
- Excel VBA小程式 -使 用VBA實現VLOOKUP函式查詢?Excel函式