oracle学习 函数
来源:互联网 发布:网络歌曲大全2017视频 编辑:程序博客网 时间:2024/06/09 16:51
聚合函数 count -- 求个数 sum -- 求和 avg -- 求平均 max min
select max(sal) from emp; //--求最高工资
select sum(sal),count(sal),avg(sal) from emp; //--总工资
分组聚合
一旦使用了group by子句,则select后只能跟分组列及聚合函数
SQL> select deptno,sum(sal) from emp group by deptno; //--按照部分分组,求每组的总工资
DEPTNO SUM(SAL)
---------- ----------
30 9400
20 6775
10 8750
重点:where groupby having的关系. 必须先写where 然后groupby 最后having
执行上,先执行where --- 筛选纪录 后执行groupby -- 对筛选出的纪录进行分组, 最后执行having -- 筛选组
SQL> select job,avg(sal) from emp where sal>900 group by job having avg(sal)>2000; //-- 将所有900元以上的员工,按照工种分组,取平均工资高于2000的组
JOB AVG(SAL)
------------------ ----------
PRESIDENT 5000
MANAGER 2758.33333
ANALYST 3000
学习distinct使用--消除重复
SQL> select distinct job from emp; //-- 查找所有的工种
SQL> select sum(distinct sal),count(distinct sal),avg(distinct sal) from emp; //distinct与聚合函数配合,不统计重复值。
SUM(DISTINCTSAL) COUNT(DISTINCTSAL) AVG(DISTINCTSAL)
---------------- ------------------ ----------------
23675 11 2152.27273
SQL> select substr(ename,2,3) from emp; //--1,例:提取 7654 号雇员姓名的 2-4位
round函数的使用。
SQL> select round(12.46) from dual;
SQL> select round(12345.46,2) from dual;
ROUND(12345.46,2)
-----------------
12345.46
SQL> select round(12345.46,1) from dual;
ROUND(12345.46,1)
-----------------
12345.5
SQL> select round(12345.46,0) from dual;
ROUND(12345.46,0)
-----------------
12345
SQL> select round(12345.46,-2) from dual;
ROUND(12345.46,-2)
------------------
12300
to_char -- 将数值或者时间转换为char型
SQL> select to_char(12345.6789,'$999,999,999.999') from dual; //--以货币形式显示sal列
TO_CHAR(12345.6789,'$999,999,9
------------------------------
$12,345.679
SQL> select to_char(12345.6789,'$000,000,000.000') from dual;
TO_CHAR(12345.6789,'$000,000,0
------------------------------
$000,012,345.679
SQL> select to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual; //--显示时间 -- 重要
TO_CHAR(SYSDATE,'YYYY-MM-DDHH:
------------------------------
2011-06-27 09:21:52
SQL> select to_char(sysdate,'yyyy"年"mm"月"dd"日" hh:mi:ss') from dual;
TO_CHAR(SYSDATE,'YYYY"年"MM"月
------------------------------
2011年06月27日 09:22:30
SQL> select * from emp where hiredate>to_date('1981-4-01','yyyy-mm-dd'); //--查找入职时间在1981-4-01后的员工:
SQL> select * from emp where hiredate=last_day(hiredate)-2; //--7.找出各月倒数第3天受雇的所有员工.
SQL> select * from emp where hiredate<add_months(sysdate,-30*12); //--8.找出早于30年前受雇的员工.
SQL> select * from emp where length(ename)=5; //--10.显示正好为5个字符的员工的姓名.
SQL> select * from emp where ename not like '%T%'; //--11.显示不带有"T"的员工的姓名.
SQL> select * from emp where to_char(hiredate,'mm')='02'; //--16.找出在(任何年份的)2月受聘的所有员工。
SQL> select sysdate-hiredate from emp; //--17.对于每个员工,显示其加入公司的天数.
--返回字符串字母小写,字母大写,字符串的长度,截取字符串
select lower('abcBCD'), upper('abcBCD'), length('abcBCD'), substr('abcBCD',2,8) from dual;
select concat('ab','cd') from dual; --链接两个字符
select round(2345.67) from dual; --四舍五入 返回2346
select to_char(add_months(to_date('1999-12-12','yyyy-MM-dd'),2),'yyyy-MM-dd') from dual; --日期增加2个月,返回2000-02-12
select to_char(add_months(to_date('1999-12-12','yyyy-MM-dd'),-2),'yyyy-MM-dd') from dual; --日期减少2个月,返回1999-10-12
select lower('abcBCD'), upper('abcBCD'), length('abcBCD'), substr('abcBCD',2,8) from dual;
select concat('ab','cd') from dual; --链接两个字符
select round(2345.67) from dual; --四舍五入 返回2346
select to_char(add_months(to_date('1999-12-12','yyyy-MM-dd'),2),'yyyy-MM-dd') from dual; --日期增加2个月,返回2000-02-12
select to_char(add_months(to_date('1999-12-12','yyyy-MM-dd'),-2),'yyyy-MM-dd') from dual; --日期减少2个月,返回1999-10-12
select add_months(sysdate,100),sysdate from dual; --返回2022/12/8 15:57:37, 2014/8/8 15:57:37
select to_char(sysdate,'yyyy-MM-dd'),to_char((sysdate)+1,'yyyy-MM-dd') from dual; --返回当前日期,和当前日期的下一天日期
select last_day(sysdate) from dual; -- 返回当前时间的最后一天时间,例如:2014/8/31 14:44:47
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual; -- 获取星期几 这里返回:星期一
select last_day(sysdate) from dual; -- 返回当前时间的最后一天时间,例如:2014/8/31 14:44:47
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual; -- 获取星期几 这里返回:星期一
select to_char(sysdate,'day') from dual; -- 获取星期几 这里返回:星期五
avg():求平均值
max():最大值
min():最小值
sum():求和,数值相加结果
count():统计查询数据条数
select (case when t.type='6' then '投标失败' else t.type end) from u_capital_record t group by t.type; --case语句
聚合函数 count -- 求个数 sum -- 求和 avg -- 求平均 max minselect (case when t.type='6' then '投标失败' else t.type end) from u_capital_record t group by t.type; --case语句
select max(sal) from emp; //--求最高工资
select sum(sal),count(sal),avg(sal) from emp; //--总工资
分组聚合
一旦使用了group by子句,则select后只能跟分组列及聚合函数
SQL> select deptno,sum(sal) from emp group by deptno; //--按照部分分组,求每组的总工资
DEPTNO SUM(SAL)
---------- ----------
30 9400
20 6775
10 8750
重点:where groupby having的关系. 必须先写where 然后groupby 最后having
执行上,先执行where --- 筛选纪录 后执行groupby -- 对筛选出的纪录进行分组, 最后执行having -- 筛选组
SQL> select job,avg(sal) from emp where sal>900 group by job having avg(sal)>2000; //-- 将所有900元以上的员工,按照工种分组,取平均工资高于2000的组
JOB AVG(SAL)
------------------ ----------
PRESIDENT 5000
MANAGER 2758.33333
ANALYST 3000
学习distinct使用--消除重复
SQL> select distinct job from emp; //-- 查找所有的工种
SQL> select sum(distinct sal),count(distinct sal),avg(distinct sal) from emp; //distinct与聚合函数配合,不统计重复值。
SUM(DISTINCTSAL) COUNT(DISTINCTSAL) AVG(DISTINCTSAL)
---------------- ------------------ ----------------
23675 11 2152.27273
SQL> select substr(ename,2,3) from emp; //--1,例:提取 7654 号雇员姓名的 2-4位
round函数的使用。
SQL> select round(12.46) from dual;
SQL> select round(12345.46,2) from dual;
ROUND(12345.46,2)
-----------------
12345.46
SQL> select round(12345.46,1) from dual;
ROUND(12345.46,1)
-----------------
12345.5
SQL> select round(12345.46,0) from dual;
ROUND(12345.46,0)
-----------------
12345
SQL> select round(12345.46,-2) from dual;
ROUND(12345.46,-2)
------------------
12300
to_char -- 将数值或者时间转换为char型
SQL> select to_char(12345.6789,'$999,999,999.999') from dual; //--以货币形式显示sal列
TO_CHAR(12345.6789,'$999,999,9
------------------------------
$12,345.679
SQL> select to_char(12345.6789,'$000,000,000.000') from dual;
TO_CHAR(12345.6789,'$000,000,0
------------------------------
$000,012,345.679
SQL> select to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual; //--显示时间 -- 重要
TO_CHAR(SYSDATE,'YYYY-MM-DDHH:
------------------------------
2011-06-27 09:21:52
SQL> select to_char(sysdate,'yyyy"年"mm"月"dd"日" hh:mi:ss') from dual;
TO_CHAR(SYSDATE,'YYYY"年"MM"月
------------------------------
2011年06月27日 09:22:30
SQL> select * from emp where hiredate>to_date('1981-4-01','yyyy-mm-dd'); //--查找入职时间在1981-4-01后的员工:
SQL> select * from emp where hiredate=last_day(hiredate)-2; //--7.找出各月倒数第3天受雇的所有员工.
SQL> select * from emp where hiredate<add_months(sysdate,-30*12); //--8.找出早于30年前受雇的员工.
SQL> select * from emp where length(ename)=5; //--10.显示正好为5个字符的员工的姓名.
SQL> select * from emp where ename not like '%T%'; //--11.显示不带有"T"的员工的姓名.
SQL> select * from emp where to_char(hiredate,'mm')='02'; //--16.找出在(任何年份的)2月受聘的所有员工。
SQL> select sysdate-hiredate from emp; //--17.对于每个员工,显示其加入公司的天数.
--返回字符串字母小写,字母大写,字符串的长度,截取字符串
select lower('abcBCD'), upper('abcBCD'), length('abcBCD'), substr('abcBCD',2,8) from dual;
select concat('ab','cd') from dual; --链接两个字符
select round(2345.67) from dual; --四舍五入 返回2346
select to_char(add_months(to_date('1999-12-12','yyyy-MM-dd'),2),'yyyy-MM-dd') from dual; --日期增加2个月,返回2000-02-12
select to_char(add_months(to_date('1999-12-12','yyyy-MM-dd'),-2),'yyyy-MM-dd') from dual; --日期减少2个月,返回1999-10-12
select lower('abcBCD'), upper('abcBCD'), length('abcBCD'), substr('abcBCD',2,8) from dual;
select concat('ab','cd') from dual; --链接两个字符
select round(2345.67) from dual; --四舍五入 返回2346
select to_char(add_months(to_date('1999-12-12','yyyy-MM-dd'),2),'yyyy-MM-dd') from dual; --日期增加2个月,返回2000-02-12
select to_char(add_months(to_date('1999-12-12','yyyy-MM-dd'),-2),'yyyy-MM-dd') from dual; --日期减少2个月,返回1999-10-12
select add_months(sysdate,100),sysdate from dual; --返回2022/12/8 15:57:37, 2014/8/8 15:57:37
select to_char(sysdate,'yyyy-MM-dd'),to_char((sysdate)+1,'yyyy-MM-dd') from dual; --返回当前日期,和当前日期的下一天日期
select last_day(sysdate) from dual; -- 返回当前时间的最后一天时间,例如:2014/8/31 14:44:47
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual; -- 获取星期几 这里返回:星期一
select last_day(sysdate) from dual; -- 返回当前时间的最后一天时间,例如:2014/8/31 14:44:47
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual; -- 获取星期几 这里返回:星期一
select to_char(sysdate,'day') from dual; -- 获取星期几 这里返回:星期五
avg():求平均值
max():最大值
min():最小值
sum():求和,数值相加结果
count():统计查询数据条数
select (case when t.type='6' then '投标失败' else t.type end) from u_capital_record t group by t.type; --case语句
select (case when t.type='6' then '投标失败' else t.type end) from u_capital_record t group by t.type; --case语句
0 0
- oracle学习--函数
- oracle函数的学习
- Oracle基础学习----函数
- oracle分析函数学习
- Oracle函数学习笔记
- oracle时间函数学习
- Oracle学习----单行函数
- oracle学习(函数)
- Oracle分析函数学习
- Oracle学习—函数
- oracle学习 函数
- oracle wm_concat 函数 学习
- Oracle函数学习
- oracle函数学习
- Oracle基本函数学习
- Oracle学习(三)----函数
- Oracle聚合函数学习
- Oracle decode函数学习
- symfony初学者必须掌握的知识
- 变成多维阵列
- symfony ManyToMany(多對多關系)
- 域名信息查询
- 經典sql語句查詢
- oracle学习 函数
- PHPCMS V9二次开发pc标签详解
- 3.集合--BlockingQueue总结1
- PHPCMS教程_标签调用代码详解
- SEO学习--网站
- mfc笔记——常用控件的方法
- Centos yum 命令 install Mysql Apache Php
- SEO=流量
- 高级搜索指令