数据库SQL函数的基本运用(后续组函数or聚合函数)

来源:互联网 发布:自助抢票软件 编辑:程序博客网 时间:2024/05/18 01:37



--函数
/*

 1.字符函数:substr(ename,起始位置,长度):截取;
             instr(ename,'元素'):indexOf;
             length(ename):长度;
             conact(ename,'内容'):
             lower(ename):转换为小写
             upper(ename):转换为大写
             lpad(ename,补充到多少位,'填充内容'):在左边补充
             rpad(ename,补充到多少位,'填充内容'):在右边补充
            
 2.日期函数:months_between(起始时间,截止时间):计算起始到截止的月数
            add_months(时间,num):在时间中加num个月
            last_day( ):当月的最后一天
            next_day(start,num):从start开始数下一个星期num-1
           
 3.转换函数:nvl:判空
            to_char( ):date/number转换为varchar
            to_date( ):varchar转换为date;一般用于新增
            to_numbe( ):varchar转换为number
            round(sal,num):四舍五入,保留num位小数
            trunt():截取
 
*/


--select substr (ename,1(位置),1(长度)) from tablename
  select substr (ename,1,1) from emp
--select instr (ename,'元素') from tablename
  select instr (ename,'s') from emp
  select ename,instr (ename,'s') from emp
--select length (eanme) from emp
  select length (ename) from emp
  select * from emp where substr (ename,length(ename),1) = 's'
--
  select concat(ename,'每个月') from emp
--
  select lower(ename) from emp
--查询名字仅首字母大写,其余小写的员工信息
  select * from emp where substr(ename,1,1)=upper(substr(ename,1,1))
  and substr(ename,2,length(ename)-1)=lower(substr(ename,2,length(ename)-1))
 
  select lpad(ename,10,'*') from emp
 
  select rpad(ename,10,'*')from emp
 
  select rpad(lpad(ename,length(ename)+4,'*'),length(ename)+8,'*') from emp
 
 
  --日期函数
  select months_between(sysdate,hiredate) from emp
--查询工龄在34年以上的员工信息
  select * from emp where months_between(sysdate,hiredate)/12 >= 34
--工龄34年以上的工资上涨100
  update emp set sal = sal + 100 where months_between(sysdate,hiredate)/12 >= 34
 
  --转换函数
 
  select hiredate,to_char(hiredate,'YYYY') from emp
 
--查询工龄在34年以上的员工信息
  select * from emp where to_char(sysdate,'YYYY') - to_char(hiredate,'YYYY') >= 34



--组函数(聚合函数)
/*
  1.min():求最小值
  2.max():求最大值
  3.sum():求和
  4.count():计数
  5.avg():平均值
  group by:分组
  
  where --> group by --> having --> order by:执行顺序


*/


--统计记录数
  select count(*) from emp
  
--分组group by
--每个部门的最高工资
  select max(sal) from emp group by deptno
  --按谁分组就只能显示谁
  select job,max(sal) from emp group by job
  --查询最高工资的人
  select * from emp where sal = (select max(sal) from emp)
  --查询平均工资高于2000的部门信息
  select deptno from emp group by deptno
  having avg(sal) > 2000
  
  --查询30号部门内部每个工作平均工资
  --高于1000的工作的信息的同时按照平均工资的降序排序
  select job,avg(sal) from emp
  where deptno = 30
  group by job
  having avg(sal) > 1000
  order by avg(sal) desc

0 0
原创粉丝点击