【Analytic】分析函式之MAX函式
MAX函式與MIN函式的使用方法相同,MIN取最小值,MAX取最大值。重點還是放在普通MAX函式與MAX分析函式的區別上。
【Analytic】分析函式之MIN函式:http://space.itpub.net/519536/viewspace-624736
1.萬變不離其宗,先看MAX函式的語法描述。
MAX([ DISTINCT | ALL ] expr)
[ OVER (analytic_clause) ]
2.透過實驗看一下兩種MAX函式的用法和區別
1)建立測試表T,並初始化幾條資料。
sec@ora10g> create table t (group_id number(10), name varchar2(10), salary int);
sec@ora10g> insert into t values (1,'Tom',1200);
sec@ora10g> insert into t values (2,'Kary',2400);
sec@ora10g> insert into t values (2,'Joe',800);
sec@ora10g> insert into t values (3,'Erick',3600);
sec@ora10g> insert into t values (3,'Andy',600);
sec@ora10g> insert into t values (3,'Mary',300);
sec@ora10g> commit;
2)T表全貌
sec@ora10g> select * from t;
GROUP_ID NAME SALARY
---------- ------------------------------ ----------
1 Tom 1200
2 Kary 2400
2 Joe 800
3 Erick 3600
3 Andy 600
3 Mary 300
6 rows selected.
共三組資料,group_id分別是1、2和3。第1組有一個人,第2組有兩個人,第3組有三個人。最後一列是每個人的薪水值。
3)先看一下普通MAX函式的用法
sec@ora10g> select group_id, name, salary, max(salary) from t group by group_id, name, salary order by group_id;
GROUP_ID NAME SALARY MAX(SALARY)
---------- ------------------------------ ---------- -----------
1 Tom 1200 1200
2 Joe 800 800
2 Kary 2400 2400
3 Andy 600 600
3 Erick 3600 3600
3 Mary 300 300
6 rows selected.
得到的最大值是按照“group_id, name, salary”三列進行分組後的每組最大值。
4)再看一下分析函式MAX得到的最大值
sec@ora10g> select group_id, name, salary, max(salary) over (partition by group_id) analytic_max from t order by group_id;
GROUP_ID NAME SALARY ANALYTIC_MAX
---------- ------------------------------ ---------- ------------
1 Tom 1200 1200
2 Kary 2400 2400
2 Joe 800 2400
3 Erick 3600 3600
3 Andy 600 3600
3 Mary 300 3600
6 rows selected.
注意這裡得到的最大值與基本MAX函式得到的最大值區別,這裡的最大值是每行記錄所對應組內的最高薪酬值。
3.小結
透過函式的基本功能看本質,很普通的函式同樣孕育著偉大的力量。
有關分析函式的擴充套件可以參考Oracle的官方文件中的“Analytic Functions”描述:
Good luck.
secooler
10.01.09
-- The End --
【Analytic】分析函式之MIN函式:http://space.itpub.net/519536/viewspace-624736
1.萬變不離其宗,先看MAX函式的語法描述。
MAX([ DISTINCT | ALL ] expr)
[ OVER (analytic_clause) ]
2.透過實驗看一下兩種MAX函式的用法和區別
1)建立測試表T,並初始化幾條資料。
sec@ora10g> create table t (group_id number(10), name varchar2(10), salary int);
sec@ora10g> insert into t values (1,'Tom',1200);
sec@ora10g> insert into t values (2,'Kary',2400);
sec@ora10g> insert into t values (2,'Joe',800);
sec@ora10g> insert into t values (3,'Erick',3600);
sec@ora10g> insert into t values (3,'Andy',600);
sec@ora10g> insert into t values (3,'Mary',300);
sec@ora10g> commit;
2)T表全貌
sec@ora10g> select * from t;
GROUP_ID NAME SALARY
---------- ------------------------------ ----------
1 Tom 1200
2 Kary 2400
2 Joe 800
3 Erick 3600
3 Andy 600
3 Mary 300
6 rows selected.
共三組資料,group_id分別是1、2和3。第1組有一個人,第2組有兩個人,第3組有三個人。最後一列是每個人的薪水值。
3)先看一下普通MAX函式的用法
sec@ora10g> select group_id, name, salary, max(salary) from t group by group_id, name, salary order by group_id;
GROUP_ID NAME SALARY MAX(SALARY)
---------- ------------------------------ ---------- -----------
1 Tom 1200 1200
2 Joe 800 800
2 Kary 2400 2400
3 Andy 600 600
3 Erick 3600 3600
3 Mary 300 300
6 rows selected.
得到的最大值是按照“group_id, name, salary”三列進行分組後的每組最大值。
4)再看一下分析函式MAX得到的最大值
sec@ora10g> select group_id, name, salary, max(salary) over (partition by group_id) analytic_max from t order by group_id;
GROUP_ID NAME SALARY ANALYTIC_MAX
---------- ------------------------------ ---------- ------------
1 Tom 1200 1200
2 Kary 2400 2400
2 Joe 800 2400
3 Erick 3600 3600
3 Andy 600 3600
3 Mary 300 3600
6 rows selected.
注意這裡得到的最大值與基本MAX函式得到的最大值區別,這裡的最大值是每行記錄所對應組內的最高薪酬值。
3.小結
透過函式的基本功能看本質,很普通的函式同樣孕育著偉大的力量。
有關分析函式的擴充套件可以參考Oracle的官方文件中的“Analytic Functions”描述:
Good luck.
secooler
10.01.09
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-624749/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Analytic】分析函式之MIN函式函式
- 【Analytic】分析函式之AVG函式函式
- 【Analytic】分析函式之RANK函式函式
- 【Analytic】分析函式之COUNT函式函式
- 【Analytic】分析函式之ROW_NUMBER函式函式
- 【Analytic】分析函式之DENSE_RANK函式函式
- 【Analytic】分析函式之FIRST_VALUE函式函式
- 【Analytic】分析函式之LAST_VALUE函式函式AST
- 【Analytic】使用MAX分析函式高效獲取每個Schema下最後被分析的表名函式
- ORACLE HANDBOOK系列之一:Oracle分析函式(Analytic Function)Oracle函式Function
- 【分析函式】Oracle分析函式之LAG和LEAD函式Oracle
- Oracle聚合函式/分析函式Oracle函式
- Oracle分析函式之開窗函式over()詳解Oracle函式
- Oracle分析函式七——分析函式案例Oracle函式
- 字串函式之Strtok()函式字串函式
- Python 擴充之特殊函式(lambda 函式,map 函式,filter 函式,reduce 函式)Python函式Filter
- 分析函式函式
- MySQL中MAX函式如何使用?MySql函式
- 分析函式之視窗子句函式
- 分析函式之排名統計函式
- Oracle分析函式與視窗函式Oracle函式
- ORACLE單行函式與多行函式之七:多行函式之分組函式示例Oracle函式
- 常見函式之單行函式函式
- oracle 10g函式大全--分析函式Oracle 10g函式
- sql優化用group by 函式代替分析函式SQL優化函式
- ejbql有無max,count等函式???函式
- 分析函式概述函式
- 分析函式 over函式
- Oracle 分析函式Oracle函式
- 分析函式 - LAG函式
- Oracle分析函式Oracle函式
- ORACLE單行函式與多行函式之四:日期函式示例Oracle函式
- ORACLE單行函式與多行函式之六:通用函式示例Oracle函式
- ORACLE函式介紹第六篇 著名函式之分析函式Oracle函式
- 【實驗】分析函式之魅力展示函式
- Kotlin之“with”函式和“apply”函式Kotlin函式APP
- oracle的分析函式over 及開窗函式Oracle函式
- mysql 自定義分析函式 least 及 日期函式MySql函式AST