程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle 基礎知識中集合函數與子查詢的內容介紹

Oracle 基礎知識中集合函數與子查詢的內容介紹

編輯:Oracle數據庫基礎

你對Oracle 基礎知識中集合函數與子查詢的相關項目是否有所了解?以及在這些項目的實際操作的應用,以下就是文章的相關內容的介紹,希望你浏覽完以下的內容會有所獲,以下就是文章的相關內容的介紹。

經常和group by一起使用

 1. 集合函數列表

AVG (DISTINCT | ALL | N) 取平均值

COUNT (DISTINCT | ALL | N | expr | * ) 統計數量

MAX (DISTINCT | ALL | N) 取最大值

MIN (DISTINCT | ALL | N) 取最小值

SUM (DISTINCT | ALL | N) 取合計值

9

J2EE @ zxw

STDDEV (DISTINCT | ALL | N) 取偏差值,如果組裡選擇的內容都相同,結果為0

VARIANCE (DISTINCT | ALL | N) 取平方偏差值

2. 使用集合函數的語法

SELECT column, group_function FROM table

WHERE condition GROUP BY group_by_expression

HAVING group_condition ORDER BY column;

3. 使用count時的注意事項

SELECT COUNT(*) FROM table;

SELECT COUNT(常量) FROM table;

都是統計表中記錄數量,如果沒有PK後者要好一些

SELECT COUNT(all 字段名) FROM table;

SELECT COUNT(字段名) FROM table;

不會統計為NULL的字段的數量

SUM,AVG時都會忽略為NULL的字段

4. 用group by時的限制條件

SELECT字段名不能隨意, 要包含在GROUP BY的字段裡

GROUP BY後ORDER BY時不能用位置符號和別名

限制GROUP BY的顯示結果, 用HAVING條件

5. 例子

SQL> select title,sum(salary) payroll from s_emp

where title like 'VP%' group by title

having sum(salary)>5000 order by sum(salary) desc;

Oracle 基礎知識中集合函數中找出某表裡字段重復的記錄數, 並顯示

SQL> select (duplicate fIEld names) from table_name

group by (list out fIElds) having count(*)>1;

6. 判斷題(T/F)

(1) Group functions include nulls in calculations [F]

(2) Using the having clause to exclude rows from a group calculation [F]

解釋:

Group function 都是忽略NULL值的 如果您要計算NULL值, 用NVL函數

Where語句在Group By前把結果集排除在外Having語句在Group By後把結果集排除在外

子查詢

1. 查詢語句可以嵌套

例如: SELECT …… FROM (SELECT …… FROM表名1, [表名2, ……] WHERE 條件) WHERE 條件2;

2. 何處可用子查詢?

當查詢條件是不確定的條件時

DML(insert, update,delete)語句裡也可用子查詢

HAVING裡也可用子查詢

3. 兩個查詢語句的結果可以做集合操作

例如:

並集UNION(去掉重復記錄)

並集UNION ALL(不去掉重復記錄)

10

J2EE @ zxw

差集MINUS,

交集INTERSECT

4. 子查詢的注意事項

先執行括號裡面的SQL語句,一層層到外面

內部查詢只執行一次

如果裡層的結果集返回多個,不能用= > < >= <=等比較符要用IN.

5. 子查詢的例子(1)

SQL> select title,avg(salary) from s_emp

group by title Having avg(salary) =

(select min(avg(salary)) from s_emp

group by title);

找到最低平均工資的職位名稱和工資

子查詢的例子(2)

子查詢可以用父查詢裡的表名

這條SQL語句是對的:

SQL>select cty_name from city where st_code in

(select st_code from state where st_name='TENNESSEE' and

city.cnt_code=state.cnt_code);

說明:父查詢調用子查詢只執行一次.

6.取出結果集的80 到100的SQL語句

Oracle處理每個結果集只有一個ROWNUM字段標明它的邏輯位置,

並且只能 用ROWNUM<100, 不能用ROWNUM>80。

以下是經過分析後較好的兩種Oracle取得結果集80到100間的SQL語句

( ID是唯一關鍵字的字段名 )

語句寫法:

SQL>select * from (

( select rownum as numrow, c.* from (

select [fIEld_name,...] from table_name where 條件1 order by 條件2) c)

where numrow > 80 and numrow <= 100 )

order by 條件3;

以上的相關內容就是對Oracle 基礎知識中集合函數的介紹,望你能有所收獲。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved