1. 程式人生 > >協助 MySQL 實現 Oracle 高階分析函式

協助 MySQL 實現 Oracle 高階分析函式

閱讀原文:http://c.raqsoft.com.cn/article/1535964014661?r=alice

Oracle 支援一些獨特的語法和函式,在移植到 MySQL 上時或多或少給程式設計師造成了困擾,下面我們針對 Oracle 的一些特殊用法舉例並講解如何用集算器來完成同樣功能。這些方法當然也不限於針對 MySQL,對於所有其它資料庫也能支援。

1、         遞迴語句

a)     select employee_id,first_name,last_name,manager_id

from hr.employees

start with employee_id=102

connect by prior employee_id = manager_id

 

A

1

=connect("orcl")

2

[email protected]("select   employee_id, first_name, last_name, manager_id from hr.employees")

3

=A2.keys(EMPLOYEE_ID)

4

[email protected](EMPLOYEE_ID==102)

5

=A2.switch(MANAGER_ID,   A2)

6

=A2.nodes(MANAGER_ID,   A4)

7

=(A4|A6).new(EMPLOYEE_ID,   FIRST_NAME, LAST_NAME, MANAGER_ID.EMPLOYEE_ID:MANAGER_ID)

(1)   A3 設定序表 A2 的鍵

(2)   A4 選取起始僱員

(3)   A5 將 A2 中 MANAGER_ID 值轉換成記錄,以便遞迴

(4)   A6 獲取起始僱員的所有子節點

                                              undefined

b)    select employee_id, first_name,last_name,manager_id

from hr.employees

start with employee_id=104

connect by prior manager_id = employee_id

 

A

1

=connect("orcl")

2

[email protected]("select   employee_id, first_name, last_name, manager_id from hr.employees")

3

=A2.keys(EMPLOYEE_ID)

4

=A2.switch(MANAGER_ID,   A2)

5

[email protected](EMPLOYEE_ID==104)

6

=A5.prior(MANAGER_ID)

7

=A6.new(EMPLOYEE_ID,   FIRST_NAME, LAST_NAME, MANAGER_ID.EMPLOYEE_ID:MANAGER_ID)

聚集分析函式和巢狀聚集函式,多重分組使用方式可閱讀原文:http://c.raqsoft.com.cn/article/1535964014661?r=alice