OracleDB组函数

OracleDB组函数,第1张

Oracle DB组函数

&# ; 组函数

– 类型和语法

– 使用AVG SUM MIN MAX COUNT

– 在组函数中使用DISTINCT关键字

– 组函数中的NULL值

何谓组函数

组函数会对行集进行计算 为每个组提供一个结果

与单行函数不同 组函数用于对行集进行计算 从而为每个组提供一个结果 这些集合可以包含整个表 也可以包含表分割成的组

组函数的类型

&# ; AVG

&# ; COUNT

&# ; MAX

&# ; MIN

&# ; STDDEV

&# ; SUM

&# ; VARIANCE

每个函数都接受一个参数 下表列出了在语法中可使用的选项

组函数 语法

SELECT group_function(column)

FROM table

[WHERE condition]

[ORDER BY column];

组函数 语法

组函数应放在SELECT关键字之后 可以使用逗号分隔多个组函数

使用组函数的准则

&# ; DISTINCT使函数仅考虑非重复值;ALL使函数考虑每个值(包括重复值) 默认值为ALL 因此无需指定

&# ; 使用expr参数的函数的数据类型可以是CHAR VARCHAR NUMBER或DATE

&# ; 所有组函数都忽略空值 要用一个值替代空值 使用NVL NVL COALESCE CASE或DECODE函数

使用AVG和SUM函数

可以对数字数据使用AVG和SUM函数

hr@TEST > SELECT AVG(salary) MAX(salary) MIN(salary) SUM(salary) FROM employees WHERE job_id LIKE %REP% ;

AVG(SALARY) MAX(SALARY) MIN(SALARY) SUM(SALARY)

可以对能够存储数字数据的列使用AVG SUM MIN和MAX函数 示例显示所有销售代表的月薪平均值 最高值 最低值与总和

使用MIN和MAX函数

可以对数字 字符和日期数据类型使用MIN和MAX函数

hr@TEST > SELECT MIN(hire_date) MAX(hire_date) FROM employees;

MIN(HIRE_DATE) MAX(HIRE_DATE)

JAN APR

可以对数字 字符和日期数据类型使用MAX和MIN函数 示例显示任职时间最短和最长的雇员

下面的示例显示在包含所有雇员的列表中 按字母顺序排列姓氏时位于首位及位于末位的雇员姓氏

hr@TEST > SELECT MIN(last_name) MAX(last_name) FROM employees;

MIN(LAST_NAME) MAX(LAST_NAME)

Abel Zlotkey

注 AVG SUM VARIANCE和STDDEV函数仅可用于处理数字数据类型 MAX和MIN函数不能用于处理LOB或LONG数据类型

使用COUNT函数

COUNT()将返回表中的行数

hr@TEST > SELECT COUNT() FROM employees WHERE department_id = ;

COUNT()

示例显示部门 中雇员的数量

COUNT(expr)将返回expr为非空值的行的数量

hr@TEST > SELECT COUNT(mission_pct) FROM employees WHERE department_id = ;

COUNT(MISSION_PCT)

示例显示部门 中可以获得佣金的雇员的数量

COUNT函数有以下三种格式

&# ; COUNT()

&# ; COUNT(expr)

&# ; COUNT(DISTINCT expr)

COUNT()用于返回表中符合SELECT语句标准的行数 包括重复行和在任何列中含有空值的行 如果SELECT语句中包含WHERE子句 则COUNT()会返回符合WHERE子句中条件的行数 相反 COUNT(expr)返回由expr标识的列中非空值的数量 COUNT(DISTINCT expr)返回由expr标识的列中不同非空值的数量

使用DISTINCT关键字

&# ; COUNT(DISTINCT expr)将返回expr的不同非空值的数量

&# ; 要显示EMPLOYEES表中不同部门值的数量 可使用

hr@TEST > SELECT COUNT(DISTINCT department_id) FROM employees;

COUNT(DISTINCTDEPARTMENT_ID)

使用DISTINCT关键字可以避免对某一列中的任何重复值进行计数

示例显示EMPLOYEES表中不同部门值的数量

组函数和空值

组函数将忽略列中的空值

hr@TEST > SELECT AVG(mission_pct) FROM employees;

AVG(MISSION_PCT)

仅根据在表的MISSION_PCT列中存储了有效值的行计算平均值 平均值的计算方法是用付给所有雇员的佣金总和除以获得佣金的雇员数( )

NVL函数会强制组函数包括空值

hr@TEST > SELECT AVG(NVL(mission_pct )) FROM employees;

AVG(NVL(MISSION_PCT ))

根据表中的所有行计算平均值 不考虑MISSION_PCT列中是否存储空值 平均值的计算方法是用付给所有雇员的佣金总和除以公司中的雇员总数( )

lishixinzhi/Article/program/Oracle/201311/18770

肯定会出错
varchar[(n)]
长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。varchar 在 SQL-92 中的同义词为 char varying 或 character varying。
nvarchar(n)
包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。nvarchar 在 SQL-92 中的同义词为 national char varying 和 national character varying。

在Oracle资料中,怎么将VARCHAR2转化为NUMBER?
修改表字段数值型别:eg:create table haha_info(remark varchar2(10));-->alter table haha_info modify remark number(2,2);
把字元型转换成数值型:select to_number(tremark) from haha_info t;

希望可以帮到你~~~
SQL语句VARCHAR2型别转化为NUMBER型别,该怎么解决
SELECT TO_NUMBER('1254875') FROM DUAL;
不过varchar值中必须全是数字的
怎么把mysql资料转化为oracle
1修改资料库连线字串:
如:
驱动器mysqljdbcDriver 改为 oraclejdbcdriverOracleDriver
连线字串jdbc:mysql:localhost:3306/xxx 改为 jdbc:oracle:thin:@localhost:1521:sid
2调整SQL语句:
如:
分页查询SELECT FROM TABLE_NAME LIMIT 1, 20 改为 SELECT FROM (SELECT A, ROWNUM RN FROM (SELECT FROM TABLE_NAME) A WHERE ROWNUM <= 20) WHERE RN >= 1
3将mysql库中的资料汇入到oracle库:
可以手工进行,如将mysql中的资料转储为sql文,作下调整,在oracle中执行;
建议使用相关工具,如Oracle SQL Developer。
4将连线资料库的jar包换成oracle的。
Oracle怎样把varchar2型转成number型
oracle中纯数字的varchar2型别和number型别自动转换:
比如:
两个表的栏位定义了不同的型别。一个栏位是varchar2型别,另一个栏位是number型别,内容如下:'00187'和187。在使用中发现会自动将varchar2型别转换为number,即187和187。
测试的sql:
select
case when '0110' = 110 then
'true'
else
'false'
end
from dual;
------------
select
case when to_number('0110') = to_number(110) then
'true'
else
'false'
end
from dual;
结论:结果都是true。为了保险起见还是用to_number()进行转换更好一些。
1、Converts a string to the NUMBER data type(将字串转换为数字资料型别)
TO_NUMBER(<value>[, <format>, <NLS parameter>]) RETURN NUMBER
select to_number('00001228') from dual;
2、Converts a HEX number to FLOAT(转换一个十六进位制数的浮标)
TO_NUMBER(<value>, <format>);
SELECT TO_NUMBER('0A', 'XX') FROM dual;
3、Converts a HEX number to DECIMAL(一个十六进位制数转换为十进位制)
TO_NUMBER(<binary_float | binary_double | number>,
'<hex mask>') RETURN <binary_float | binary_double | number>;
SELECT TO_NUMBER(100000,'XXXXXXXX') FROM dual;

收下varchar2中存的必须要是数字,否则转换会失败

直接用to_number即可


select to_number('100') from dual;

alter session设置的是当前会话参数,退出后就失效了
你可以重登陆后show parameter nls查看
当然也可以不退出,直接:
alter session set nls_language='SIMPLIFIED CHINESE';

oracle判断外国人姓的具体方法:外国人的名字是先写在前面的,也就是左边,名字写在右边,举个例子,迈克杰克逊,迈克是他的名字,杰克逊是他的姓氏。一般名和姓会用空格或者是一点来隔开。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/yw/12694117.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存