ORACLE中什么是组函数?
组(多行)函数
与单行函数相比,oracle提供了丰富的基于组的,多行的函数。这些函数可以在select或select的having子句中使用,当用于select子串时常常都和GROUP BY一起使用。
AVG([{DISYINCT|ALL}])
返回数值的平均值。缺省设置为ALL.
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
COUNT({*|DISTINCT|ALL} )
返回查询中行的数目,缺省设置是ALL,*表示返回所有的行。
MAX([{DISTINCT|ALL}])
返回选择列表项目的最大值,如果x是字符串数据类型,他返回一个VARCHAR2数据类型,如果X是一个DATA数据类型,返回一个日期,如果X是numeric数据类型,返回一个数字。注意distinct和all不起作用,应为最大值与这两种设置是相同的。
MIN([{DISTINCT|ALL}])
返回选择列表项目的最小值。
STDDEV([{DISTINCT|ALL}])
返回选者的列表项目的标准差,所谓标准差是方差的平方根。
SUM([{DISTINCT|ALL}])
返回选择列表项目的数值的总和。
VARIANCE([{DISTINCT|ALL}])
返回选择列表项目的统计方差。
用GROUP BY给数据分组
正如题目暗示的那样组函数就是操作那些已经分好组的数据,我们告诉数据库用GROUP BY怎样给数据分组或者分类,当我们在SELECT语句的SELECT子句中使用组函数时,我们必须把为分组或非常数列放置在GROUP BY子句中,如果没有用group by进行专门处理,那么缺省的分类是将整个结果设为一类。
select stat,counter(*) zip_count from zip_codes GROUP BY state;ST ZIP_COUNT-- ---------AK 360AL 1212AR 1309AZ 768CA 3982
在这个例子中,我们用state字段分类;如果我们要将结果按照zip_codes排序,可以用ORDER BY语句,ORDER BY子句可以使用列或组函数。
select stat,counter(*) zip_count from zip_codes GROUP BY state ORDER BY COUNT(*) DESC;ST COUNT(*)-- --------NY 4312PA 4297TX 4123CA 3982
用HAVING子句限制分组数据
现在你已经知道了在查询的SELECT语句和ORDER BY子句中使用主函数,组函数只能用于两个子串中,组函数不能用于WHERE子串中,例如下面的查询是错误的:
错误SELECT sales_clerk,SUN(sale_amount) FROM gross_sales WHERE sales_dept='OUTSIDE' AND SUM(sale_amount)>10000 GROUP BY sales_clerk
这个语句中数据库不知道SUM()是什么,当我们需要指示数据库对行分组,然后限制分组后的行的输出时,正确的方法是使用HAVING语句:
SELECT sales_clerk,SUN(sale_amount) FROM gross_sales WHERE sales_dept='OUTSIDE' GROUP BY sales_clerkHAVING SUM(sale_amount)>10000;
oracle中lpad函数是干嘛用的?
lpad函数:在字符串左边添加指定的字符串,用法:lpad(字符串,截断长度,添加字符串)。准确地说,字符串被字符串截取。如果截距的长度大于字符串的长度,则在字符串的左侧添加一个字符串以填充。如果未指定第三个参数,则填充空格。例如:从dual中选择lpad('test',10);将返回“ test”从dual中选择lpad('test',10,'ee');结果将返回eeeeeetest。扩展资料:oracle常用函数:lower(char):将字符串表达式char中的所有大写字母转换为小写字母。大写(char):将字符串表达式char中的所有小写字母转换为大写字母。initcap(char):第一个字母转换为大写。substr(char,start,length):返回字符串表达式char开头的长度字符。长度(char):返回字符串表达式char的长度。ascii(char):取char的ascii值。chr(number):取number的ascii值。replace(char,search_str[,replacement_str]):用replacement_str替换字符串char中的子字符串search_str;如果search_str=null,则返回char;如果replacement_str=null,则删除char中的search_str。instr(char1,char2[,n[,m]]:获取子字符串char2在字符串char1中的位置。n为实际搜索位置,m为子字符串出现的次数;n为负,则从尾部开始搜索;n\m默认为1。lpad(char1,n,char2):填充字符串char1左端的字符串char2,直到长度达到n;char2默认为空格,如果char1.length>n,则返回char1左端的n个字符。rpad(char1,n,char2):填充字符串char1右端的字符串char2,直到长度达到n;char2默认为空格,如果char1.length>n,则返回char1左端的n个字符。ltrim(char1[,set]):从字符串char1左端包含的集合中删除任何字符。rtrim(char1[,set]):删除字符串char1右端包含的集合中的任何字符。trim(char char from string):从字符串的开头或结尾截断特定字符。concat(str1,str2):连接字符串,其效果与相同。参考资料来源:百度百科-Oracle数据库

