oracle数据库-SQL语言开发与运用(四)

实战05 开发之常用函数

五个实战系列所有的课程:

本课重点:都是oracle的内置函数

 1、聚合函数-数据统计

(1)max 取列和表达式最大值

select max(salary)from yg;

select max(distinct salary)from yg;遇见重复的,只取一次值

(2)min 取列和表达式最小值

select min(salary)from yg;

select min(distinct salary)from yg;

(3)avg 取列和表达式平均值

select avg(salary)from yg;

select avg(distinct salary)from yg;

(4)sum 求列和表达式总和

统计每个部门的总工资

select department_id,sum(salary) from yg group by department_id order by 2 desc;

(5)count 求行数总和

select count(*) from yg;

select count(*) from yg where manager_id =120;

select count(distinct manager_id) from yg;

(6)其他:标准差stddev、协方差、中位数

2、分组函数 group by ,having

group by (分组统计)+ having(限制分组显示结果)+ max

(1)简单的分组函数应用

统计各个国家名字的长度length、avg、round(四舍五入)

select country_name,length(country_name)from gj group by country_name;

(2)多列分组数据

日期到字符的转换函数,--to_char,count

select to_char(end_date,'yyyy') year,job_id,count(*)from jl group by to_char(end_date,'yyyy'),job_id order by 1;

(3)使用having子句

1.对行进行分组 2.应用组函数 3.显示符合having子句条件的组

查招聘大于等于15个员工在星期几:

select to_char(hire_date,'Day') 星期几,count(*) from yg group by to_char(hire_date,'Day')having count(*) >=15;

统计部门里最大工资大于10000的

select department_id,max(salary)from yg group by department_id having max(salary) >10000 order by 2;

3、字符函数--运算和截取

3.1 round(n,[m])m等于0表示整数,m<0小数点的前m位,m>0小数点的后m位。

select salary,salary+0.2 from yg;

select salary,round(salary+0.2) from yg;

select salary,round((salary+0.867),-4) from yg;

select salary,round((salary+0.867),2) from yg;

3.2 trunc(n,[m]) 截取数字 m等于0表示去掉小数位,m<0小数点的前m位,m>0小数点的后m位。

select salary,trunc(salary+0.2) from yg;

select salary,trunc((salary+0.867),2) from yg;

3.3 ceil(n)返回大于等于数字n的最小整数。

3.4 floor(n) 返回小于等于数字n的最小整数

3.5 length(n) 返回字符串的长度

4、转换函数--大小写转换

4.1 lower 小写转换

select first_name,last_name from yg where first_name like '%li%';

select first_name,last_name from yg where lower(first_name) like '%li%';

4.2 upper 转换为大写

4.3 initcap 将第一个字母大写,其余的都小写

4.4 综合运用

5、转换函数--日期字符数字转换

5.1 to_char 把日期数字转换为字符串

5.2 to_date 把字符串转换为数据库中的日期类型

--Year: yy 16,yyy 016,yyyy 2016

--Month: mm 11,mon 11月/nov,month 11月/november

--Day: dd 当月第几天 02,ddd 当年第几天 02,dy 当周第几天 星期五/fri,day 当周第几天 星期五/friday

 ---Hour: hh 12小时进制 01,hh24 24小时进制 13

      --24小时的时间范围: 0:00:00 -23:59:59,12小时的时间范围不怎么用

---Minute: mi 60进制 45

---Second: ss 60进制 25

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

5.3 to_number 把字符转换为数字

6、日期函数

6.1 sysdate查询系统当前时间

select sysdate from dual;

6.2 add_months 增加/减去月份

select add_months(sysdate,-1) from dual;

select add_months(sysdate,+1)from dual;

6.3 last_day 返回日期的最后一天

select last_day(add_months(sysdate,+1)) from dual;

6.4 months_between 时间2-时间1的月份

6.5 next_day

星期日=1,一=2,依次类推

6.6 current_date 当前日期

6.7 current_timestamp 当期的日期

6.8 sessiontimezone 时区

6.9 trunc(for date)

select trunc(sysdate,'YYYY') from dual;

select trunc(sysdate,'MM') from dual;

select trunc(sysdate,'D') from dual;

7、集合函数--合并两张表

7.1 union(无重并集,去重排序)

7.2 union all(有重并集,不去重排序)

7.3 intersect (交集)

7.4 minus (差集)

 8、分析函数-使用decode函数

decode(条件,值1,返回值1,值2,返回值2,)

原文地址:https://www.cnblogs.com/maowuyu-xb/p/11504373.html