oracle常用sql汇总

 /*

    连接查询

  */

--1、查询各个管理者的编号及其手下员工的最低工资,其中最低工资不能低于2000,没有管理者的员工不计算在内

--分析:找管理者手下的员工的最低工资,要将管理员底下的所有员工进行分组,在统计最低工资。

  select job,min(sal)

  from emp

  group by job

  having min(sal)>=2000;

 

--2查询所有部门的名称,loc,员工数量和工资平均值

--所有部门的名称必须从表dept中查询,而员工的数量和平均工资则必须从emp表中查询,所以该查询必须用到连接

select d.dname 部门名称,d.loc 部门地址,count(e.empno) 员工数量,round(avg(sal),0) 平均工资

from dept d,emp e

where d.deptno=e.deptno

group by d.dname,d.loc;

 

/******************************************************************/

 

      /*

         单行函数

      */

         --1、显示系统时间(取别名为“DATE”).

        select sysdate "DATE" from dual;

 

 --2.  查询员工号,姓名,工资(若为NULL则作为0处理),以及工资提高百分之20%后四舍五入到整数的结果(取别名为new salary)

         

select empno 员工号,ename 姓名,nvl(sal,0) 工资,nvl(sal,0)*1.2 工资提高 from emp;

 

 --3.  将员工的姓名(取别名为"Name")按字母表先后顺序排序,并写出姓名的长度(取别名为"length")

         

        select ename 员工姓名

        from emp

        order by ename asc;

 

--4.  查询各员工的姓名,并显示出各员工在公司工作了多少个月份(起别名为"worked_month")四舍五入到整数

select ename 员工姓名,round(months_between(sysdate,hiredate) ,0) 月份 from emp;

        

--5.  查询员工的姓名和工资,按下面的形式显示结果(工资字段必须为15位,空位用$填充)

         

         select ename,lpad(sal,15,'$') from emp;

         

 --7.  查询员工的姓名,以及在公司工作满了多少个月(worked_month),并按月份数降序排列

         --结论:必须是 字段名 is not null,这里字段名不能改成别名,如果想用别名 ,则重新生成一张表,

         --把别名改成字段名,这样就可以用别名了

          

select 姓名,月份

from(select ename 姓名,round(months_between(sysdate,hiredate),0) 月份 from emp)

order by 月份 desc;

 

--8.  做一个查询,按下面的形式显示结果  <ename> earns <sal> monthly but wants to<sal*3>

             

select ename||' earns '||sal||' monthly but wants to '||nvl(sal,0)*3 from emp;

 

--9.  做一个查询,按下面的形式显示结果   KING****

         

   select rpad(ename,length(ename)+round(sal/1000),'*' ) from emp;

 

--10、输出ename,job,grade 按对job进行级别分类

要求:  'PRESIDENT','A'

'MANAGER','B'

'ANALYST','C'

'SALESMAN','D'

 其它 'E'

        

Select ename 姓名,

job 职位,

decode(job,'PRESIDENT','A','MANAGER','B','ANALYST','C','SALESMAN','D','E') 级别  

from emp;

 

posted @   小强找BUG  阅读(212)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示