SQL函数知识点

SQL题目(一)

1、查询部门编号为10的员工信息

select*from emp where empno=10;

2、查询年薪大于3万的人员的姓名与部门编号

select ename,sal from emp where sal*12>30000

3、查询佣金为null的人员姓名与工资

select*from emp where comm is null

4 查询工资大于1500 且 and 含有佣金的人员姓名

select*from emp where comm >0 and sal>1500

5 查询工资大于1500 或 or含有佣金的人员姓名

select*from emp where comm >0 or sal>1500

6查询姓名里面含有 S 员工信息 工资、名称

select SAL,ENAME from emp where ename like '%S%'

7求姓名以J开头第二个字符O的员工姓名的与工资

select ENAME, SAL,empno from emp where ename like '%J%'and ename like '_O%'

8、求包含%的雇员姓名

(1)insert into emp(empno,ename) values(9527,'huan%an');

(2)select * from emp where ename like '%\%%' escape '\'

9 使用in查询部门名称为 SALES 和 RESEARCH 的雇员姓名、工资、部门编号

select * from emp where job in('SALES','CLERK')

10 使用exists查询部门名称为SALES和RESEARCH 的雇员姓名、工资、部门编号。

select * from emp where exists(select * from dept where job in('SALES','CLERK'))

select empno,ename,job,sal from emp e where exists(select* from dept d where job in('SALES','CLERK') and e.epstno=d.epstno)

SQL题目(二)

1、查询10号部门中编号最新入职的员工,工龄最长的员工的个人信息。

2、从“software”找到‘f’的位置,用‘*’左右填充到15位,去除其中的‘a’。

3、查询员工的奖金,如果奖金不为NULL显示‘有奖金’,为null则显示无奖金

4、写一个查询显示当前日期,列标题显示为Date。再显示六个月后的日期,下一个星期 日的日期,该月最后一天的日期。

5、查询EMP表按管理者编号升序排列,如果管理者编号为空则把为空的在最前显示

6、求部门平均薪水

7、按部门求出工资大于1300人员的 部门编号、平均工资、最小佣金、最大佣金,并且最大佣金大于100

8、找出每个部门的平均、最小、最大薪水

9、查询出雇员名,雇员所在部门名称, 工资等级。

*/

--1、查询10号部门中最新入职的员工,工龄最长的员工的个人信息。

select e.* from emp e where e.hiredate in (

(select max(e1.hiredate) from emp e1 where e1.deptno = 10),

(select min(e2.hiredate) from emp e2 where e2.deptno = 10));

--2、从“software”找到‘f’的位置,用‘*’左右填充到15位,去除其中的‘a’。

select instr('software','f') from dual;

select lpad('software',15,'*') from dual;

select rpad('software',15,'*') from dual;

select replace('software','a') from dual;

--3、查询员工的奖金,如果奖金不为NULL显示‘有奖金’,为null则显示无奖金

select decode(e.comm,null,'无奖金','有奖金') from emp e;

--4、写一个查询显示当前日期,列标题显示为Date。

--再显示六个月后的日期,下一个星期 日的日期,该月最后一天的日期。

select sysdate "Date", add_months(sysdate,6) 六个月后 ,next_day(sysdate,'星期日') 下个星期日, last_day(sysdate) 该月最后一天 from dual;

--5、查询EMP表按管理者编号升序排列,如果管理者编号为空则把为空的在最前显示 (nulls first)

select * from emp e order by e.mgr asc nulls first;

--6、求部门平均薪水

select e.deptno ,avg(e.sal) from emp e group by e.deptno;

--7、按部门求出工资大于1300人员的 部门编号、平均工资、最小佣金、最大佣金,并且最大佣金大于100

select e.deptno,avg(e.sal),min(e.comm),max(e.comm) from emp e where e.sal>1300 group by e.deptno having max(nvl(e.comm,0))>100;

--8、找出每个部门的平均、最小、最大薪水

select e.deptno,avg(e.sal),min(e.sal),max(e.sal) from emp e group by e.deptno;

--9、查询出雇员名,雇员所在部门名称,工资等级。

select * from emp e ,dept d where e.deptno = d.deptno;

select * from salgrade;

select e.ename,d.dname from emp e, dept d where e.deptno = d.deptno;

select e.ename ,sg.grade from emp e,salgrade sg where e.sal between sg.losal and sg.hisal;

select e.ename, d.dname, sg.grade

from emp e, dept d, salgrade sg

where e.deptno = d.deptno

and e.sal between sg.losal and sg.hisal;

/*

1、查询82年员工

2、查询32年工龄的人员

3、显示员工雇佣期 6 个月后下一个星期一的日期

4、找没有上级的员工,把mgr的字段信息输出为 "boss"

5、为所有人长工资,标准是:10部门长10%;20部门长15%;30部门长20%其他部门长18%

*/

select * from emp;

--1、查询82年员工

select e.ename from emp e where to_char(e.hiredate,'yy') = '82';

--2、查询32年工龄的人员

select e.*,(months_between(sysdate,e.hiredate)/12) from emp e where (months_between(sysdate,e.hiredate)/12) >= 32;

--3、显示员工雇佣期 6 个月后下一个星期一的日期

select next_day(add_months(e.hiredate,6),'星期一') from emp e;

--4、找没有上级的员工,把mgr的字段信息输出为 "boss"

select e.ename,nvl(to_char(e.mgr),'boss') from emp e;

--5、为所有人长工资,标准是:10部门长10%;20部门长15%;30部门长20%,其他部门长18%

select e.ename,e.sal,e.deptno,(case e.deptno when 10 then e.sal*1.1

when 20 then e.sal*1.15

when 30 then e.sal*1.2

else e.sal*1.18 end ) from emp e;

select e.,decode(e.deptno,10,e.sal1.1,20,e.sal1.15,30,e.sal1.2,e.sal*1.18) from emp e;

select * from emp;

需要注意的点

--分组可以按多个列分组

select e.job,e.sal from emp e group by e.job,e.sal;

--group by分组的列可以不出现在select里,检索字段(select后面跟着的字段)必须出现在分组列表里。

--错误的:select e.job,e.detpno from emp e group by e.job;

--正确的:select e.deptno from emp e group by e.deptno,e.sal,e.job;

--如果分组列中具有null值,则null将作为一个分组返回。如果列中有多行null值,他们将分为一组。

select comm from emp e group by e.comm;

--group by 子句必须出现在where子句之后,order by 子句之前。

select e.deptno from emp e where e.sal>800 group by e.deptno having e.deptno=20 order by e.deptno desc

--where过滤行记录 having 过滤组记录

--select 后面只能跟列( group by 出现的列)或组函数

--不能在 WHERE 子句中使用组函数

--错误的:select e.deptno from emp e where avg(e.sal) group by e.deptno;

--求部门下雇员的平均工资>2000 人数

select e.deptno ,count(1),avg(e.sal) from emp e group by e.deptno having avg(e.sal) > 2000;

/*

Sql语句执行过程

1.读取from子句中的基本表、视图的数据,[执行笛卡尔积操作]。

2.选取满足where子句中给出的条件表达式的元组

3.按group子句中指定列的值分组,同时提取满足Having子句中组条件表达式的那些组

4.按select子句中给出的列名或列表达式求值输出

5.Order by子句对输出的目标表进行排序。

Sql语句执行顺序

from - where - group by - having - select - order by

组函数

--1.min() 求一组数据中的最小值

select min(e.sal) from emp e;

--2.max() 求一组数据中的最大值

select max(e.sal) from emp e;

--3.avg() 求一组数据中的平均值

select avg(e.sal) from emp e;

--4.sum() 求一组数据中的和

select sum(e.sal) from emp e;

--5.count() 求一组数据有多少行

select count(1) from emp e;

SQL函数知识点的更多相关文章

  1. sql注入知识点整理(基础版)

    sql注入知识点整理(基础版) 基本步骤 判断是否报错 判断闭合符号 判断注入类型 构建payload 手工注入或者编写脚本 基本注入类型 报错型注入 floor公式(结果多出一个1):and (se ...

  2. Oracle 中的sql函数以及分页

    SELECT LPAD(,'*.') "LPAD example" FROM DUAL; 1.分页查询 (1)方法一:使用  between  and 来实现分页 select * ...

  3. SQL函数说明大全

    一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果.这些要求包括:执行计算与数学运算.转换数据.解析数值.组合值和聚合一个范围内的值等. 下表给出了T-SQL函数的类别和描 ...

  4. oracle(sql)基础篇系列(一)——基础select语句、常用sql函数、组函数、分组函数

        花点时间整理下sql基础,温故而知新.文章的demo来自oracle自带的dept,emp,salgrade三张表.解锁scott用户,使用scott用户登录就可以看到自带的表. #使用ora ...

  5. [转]字符型IP地址转换成数字IP的SQL函数

    使用SQL函数可以实现许多的功能,下面为您介绍的是字符型IP地址转换成数字IP的SQL函数示例,供您参考,希望对您学习SQL函数能够有所帮助.      /**//*--调用示例       sele ...

  6. 常用的Sql 函数

    常用的Sql 函数 1: replace 函数,替换字符. 语法 replace (original-string, search-string, replace-string ) 第一个参数你的字符 ...

  7. 常用的 SQL 函数

    SQL 函数 聚合函数(针对数字列): AVG:求平均分  COINT: 计算个数  MAX: 求最大值  MIN: 求最小值  SUM: 求和 数学函数():  ABS:     绝对值  CEIL ...

  8. Oracle数据库--SQL函数

    Oracle SQL函数  1.ASCII返回与指定的字符对应的十进制数;SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii( ...

  9. 常用的sql函数

    常用的sql函数 concat('hello','world') 结果:helloworld  作用:拼接 substr('helloworld',1,5)      hello           ...

随机推荐

  1. 【自定义轮播图】微信小程序自定义轮播图无缝滚动

    先试试效果,可以通过设置参数调整样式 微信小程序中的轮播图可以直接使用swiper组件,如下: <swiper indicator-dots="{{indicatorDots}}&qu ...

  2. (十)、cat--查看文件命令

    一.命令描述与格式 将文件或标准输入组合输出到标准输出,所以注定了其可以配合管道应用, 格式:cat    [选项]    [files] 选项: -A   --show-all            ...

  3. AspectJ之@DeclareParents注解为对象添加新方法

    众所周知,AspectJ可以通过@Before,@After,@Around等注解对连接点进行增强,今天我们来玩一个新注解@DeclareParents.对目标对象增强一个新方法. 场景引入: 现在我 ...

  4. eclipse再见,android studio 新手入门教程(一)基本设置

    写在前面: 作为一个刚半只脚踏入android开发的新手,在使用eclipse开发了两个自我感觉不甚成熟的商城类app之后,遇到了一些问题,总结为如下: 代码复用性.findviewById,oncl ...

  5. CMS、G1收集器

    目录 CMS.G1收集器 1.CMS收集器 1.1.原理 1.2.不足 2.G1收集器 2.1.特点 2.2.执行过程 CMS.G1收集器 1.CMS收集器 CMS(Concurrent Mark S ...

  6. 痞子衡嵌入式:MCUXpresso IDE下添加新路径下源文件进工程编译的方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下添加新路径下源文件进工程编译的方法. 接着上篇文章 <MCUXpresso IDE下SDK工程导入与 ...

  7. git基础-git别名

    Git 并不会在你输入部分命令时自动推断出你想要的命令. 如果不想每次都输入完整的 Git 命令,可以通过 git config 文件来轻松地为每一个命令设置一个别名. 这里有一些例子你可以试试: $ ...

  8. 技术面试没过,居然是没有用pytest测试框架

    1.引言 我有一个朋友是做Python自动化测试的.前几天他告诉我去参加一个大厂面试被刷了. 我问他是有没有总结被刷下来的原因.他说面试官问了一些 pytest 单元测试框架相关的知识,包括什么插件系 ...

  9. Head First 设计模式 —— 04. 工厂 (Factory) 模式

    思考题 如何将实例化具体类的代码从应用中抽离,或者封装起来,使它们不会干扰应用的其他部分? P111 将实例化具体类的代码放入一个对象中管理,通过不同入参决定实例化具体的类 简单工厂 不是23种GOF ...

  10. VMware虚拟机安装黑群晖DSM6.2 (转)

    安装DSM6.2.和安装5.1的过程大致相同,只是在虚拟机的配置时有所不同. 需要用到的工具 Roadkil's Disk Image – 写镜像工具:http://www.roadkil.net/p ...