當前位置:編程學習大全網 - 編程語言 - ORACLE組函數是什麽意思?

ORACLE組函數是什麽意思?

組(多行)函數\x0d\ 與單行函數相比,oracle提供了豐富的基於組的,多行的函數。這些函數可以在select或select的having子句中使用,當用於select子串時常常都和GROUP BY壹起使用。\x0d\ AVG([{DISYINCT|ALL}])\x0d\ 返回數值的平均值。缺省設置為ALL.\x0d\SELECT AVG(sal),AVG(ALL sal),AVG(DISTINCT sal) FROM scott.empAVG(SAL) AVG(ALL SAL) AVG(DISTINCT SAL)1877.94118 1877.94118 1916.071413\x0d\ COUNT({*|DISTINCT|ALL} )\x0d\ 返回查詢中行的數目,缺省設置是ALL,*表示返回所有的行。\x0d\ MAX([{DISTINCT|ALL}])\x0d\ 返回選擇列表項目的最大值,如果x是字符串數據類型,他返回壹個VARCHAR2數據類型,如果X是壹個DATA數據類型,返回壹個日期,如果X是numeric數據類型,返回壹個數字。註意distinct和all不起作用,應為最大值與這兩種設置是相同的。\x0d\ MIN([{DISTINCT|ALL}])\x0d\ 返回選擇列表項目的最小值。\x0d\ STDDEV([{DISTINCT|ALL}])\x0d\ 返回選者的列表項目的標準差,所謂標準差是方差的平方根。\x0d\ SUM([{DISTINCT|ALL}])\x0d\ 返回選擇列表項目的數值的總和。\x0d\ VARIANCE([{DISTINCT|ALL}])\x0d\ 返回選擇列表項目的統計方差。\x0d\ 用GROUP BY給數據分組\x0d\ 正如題目暗示的那樣組函數就是操作那些已經分好組的數據,我們告訴數據庫用GROUP BY怎樣給數據分組或者分類,當我們在SELECT語句的SELECT子句中使用組函數時,我們必須把為分組或非常數列放置在GROUP BY子句中,如果沒有用group by進行專門處理,那麽缺省的分類是將整個結果設為壹類。\x0d\select stat,counter(*) zip_count from zip_codes GROUP BY state;ST ZIP_COUNT-- ---------AK 360AL 1212AR 1309AZ 768CA 3982\x0d\ 在這個例子中,我們用state字段分類;如果我們要將結果按照zip_codes排序,可以用ORDER BY語句,ORDER BY子句可以使用列或組函數。\x0d\select stat,counter(*) zip_count from zip_codes GROUP BY state ORDER BY COUNT(*) DESC;ST COUNT(*)-- --------NY 4312PA 4297TX 4123CA 3982\x0d\ 用HAVING子句限制分組數據\x0d\ 現在妳已經知道了在查詢的SELECT語句和ORDER BY子句中使用主函數,組函數只能用於兩個子串中,組函數不能用於WHERE子串中,例如下面的查詢是錯誤的:\x0d\錯誤SELECT sales_clerk,SUN(sale_amount) FROM gross_sales WHERE sales_dept='OUTSIDEAND SUM(sale_amount)>10000 GROUP BY sales_clerk\x0d\ 這個語句中數據庫不知道SUM()是什麽,當我們需要指示數據庫對行分組,然後限制分組後的行的輸出時,正確的方法是使用HAVING語句:\x0d\SELECT sales_clerk,SUN(sale_amount) FROM gross_sales WHERE sales_dept='OUTSIDEGROUP BY sales_clerkHAVING SUM(sale_amount)>10000;

  • 上一篇:剛從山裏出來,問壹下紅綠黃燈都代表什麽意思?
  • 下一篇:電腦的滑動條老是上下移動,大家遇見過沒
  • copyright 2024編程學習大全網