首页 > 数据库 >mysql基础练习(二)

mysql基础练习(二)

时间:2023-04-26 20:35:56浏览次数:37  
标签:sal -- 练习 基础 SELECT emp mysql deptno select

-- 创建表
drop table if exists emp;
create table emp(
empno int,
ename varchar(50),
job varchar(50),
mgr int,
hiredate date,
sal decimal(7,2),
comm decimal(7,2),
deptno int
)engine=innodb default charset=utf8;

drop table if exists dept;
create table dept(
deptno int,
dname varchar(14),
loc varchar(13)
)engine=innodb default charset=utf8;

INSERT INTO emp VALUES(7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20);
INSERT INTO emp VALUES(7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30);
INSERT INTO emp VALUES(7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30);
INSERT INTO emp VALUES(7566,'JONES','MANAGER',7839,'1981-04-02',2975,NULL,20);
INSERT INTO emp VALUES(7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30);
INSERT INTO emp VALUES(7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,NULL,30);
INSERT INTO emp VALUES(7782,'CLARK','MANAGER',7839,'1981-06-09',2450,NULL,10);
INSERT INTO emp VALUES(7788,'SCOTT','ANALYST',7566,'1987-04-19',3000,NULL,20);
INSERT INTO emp VALUES(7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10);
INSERT INTO emp VALUES(7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30);
INSERT INTO emp VALUES(7876,'ADAMS','CLERK',7788,'1987-05-23',1100,NULL,20);
INSERT INTO emp VALUES(7900,'JAMES','CLERK',7698,'1981-12-03',950,NULL,30);
INSERT INTO emp VALUES(7902,'FORD','ANALYST',7566,'1981-12-03',3000,NULL,20);
INSERT INTO emp VALUES(7934,'MILLER','CLERK',7782,'1982-01-23',1300,NULL,10);

INSERT INTO dept VALUES(10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO dept VALUES(20, 'RESEARCH', 'DALLAS');
INSERT INTO dept VALUES(30, 'SALES', 'CHICAGO');
INSERT INTO dept VALUES(40, 'OPERATIONS', 'BOSTON');
-- 1、按员工编号升序排列不在10号部门工作的员工信息
SELECT *
FROM emp
WHERE deptno != 10
ORDER BY empno;
-- 2、查询姓名第二个字母不是”A”且薪水大于800元的员工信息,按薪水降序排列
SELECT *
FROM emp
where ename not LIKE "_A%" and CEIL(sal) > 800;
-- 3、求每个部门的平均薪水
SELECT deptno, avg(sal)
FROM emp
GROUP BY deptno;
-- 4、求各个部门的最高薪水
SELECT deptno, max(sal)
FROM emp
GROUP BY deptno;
-- 5、求每个部门每个职位的最高薪水
SELECT deptno, job, MAX(sal)
FROM emp
group by deptno, job
-- 6、求平均薪水大于2000的部门编号
SELECT deptno, avg(sal) avgSal
from emp
group by deptno
HAVING avgSal > 2000;
-- 7、将员工薪水大于1200且部门平均薪水大于1500的部门编号列出来,按部门平均薪水降序排列
select deptno, avg(sal) avgSal
from emp
where sal > 1200
GROUP BY deptno
HAVING avgSal > 1500
ORDER BY avgSal desc;

-- 8、求最高薪水的员工信息
SELECT *
from emp
where sal = (
SELECT max(sal)
FROM emp
)
-- 9、求多于平均薪水的员工信息
SELECT *
FROM emp
where sal > (
SELECT AVG(sal)
FROM emp
)

-- 10、求各个部门薪水最高的员工信息 显示部门名称
SELECT dept.dname, t2.*
FROM dept,(
select emp.*
from emp, (
SELECT deptno, MAX(sal) maxSal
FROM emp
GROUP BY deptno) t1
where emp.deptno = t1.deptno AND emp.sal = t1.maxSal) t2
where dept.deptno = t2.deptno


-- 11. 查询和Scott相同部门的员工姓名和雇用日期

select ename, hiredate
FROM emp
WHERE ename != "SCOTT" and deptno = (
select deptno
from emp
where ename = "SCOTT");
-- 12.	查询工资比公司平均工资高的员工的员工号,姓名和工资。
SELECT empno, ename, sal
FROM emp
WHERE sal > (
select AVG(sal)
FROM emp);
-- 13.	查询各部门中工资比本部门平均工资高的员工的员工号, 姓名和工资

-- 13.1
SELECT empno, ename, sal
FROM emp,(
SELECT deptno, avg(sal) avgSal
from emp 
GROUP BY deptno
) t1
where emp.deptno = t1.deptno and emp.sal > t1.avgSal;

-- 13.2
select empno, ename, sal
FROM emp inner join (
SELECT deptno, avg(sal) avgSal
FROM emp
GROUP BY deptno
) t1
on emp.deptno = t1.deptno and emp.sal > t1.avgSal

-- 14.	查询和姓名中包含字母u的员工在相同部门的员工的员工号和姓名
SELECT empno, ename
FROM emp
WHERE deptno in (
SELECT deptno
FROM emp
WHERE ename LIKE "%u%"
)

-- 15. 	查询在部门的loc为 DALLAS 的部门工作的员工的员工号
SELECT empno
from emp
WHERE deptno in (
SELECT deptno
FROM dept
WHERE loc = "DALLAS");


-- 16.	查询所有部门的名字,loc,员工数量 和 工资平均值 ()
-- 16.1
select dept.dname, dept.loc, t1.*
from dept, (
select avg(sal), count(empno), deptno
from emp
group by deptno
) t1
where t1.deptno = dept.deptno;

-- 16.2
select d.*, count(e.empno), avg(sal)
from dept d, emp e
where d.deptno = e.deptno
GROUP BY d.deptno, d.dname, d.loc


-- 17.查询平均工资最低的部门信息
-- 17.1
select *
from dept
where deptno = (
select deptno
from emp
GROUP BY deptno
order by avg(sal)
limit 1)

-- 17.2
select *
from dept
where deptno = (
select deptno
from emp
group by deptno
having avg(sal) like (
select min(t1.avgSal)
from (
select deptno, avg(sal) avgSal
from emp
GROUP BY deptno
) t1
))

-- 18.查询平均工资最低的部门信息和该部门的平均工资
select dept.*, avgSal
from dept, (
select deptno, avg(sal) avgSal
from emp
group by deptno) t1
where dept.deptno = t1.deptno


-- 19.查询平均工资高于公司平均工资的部门有哪些?
select deptno
from emp
group by deptno
having avg(sal) > (
select avg(sal) avgSal
from emp
)

-- 20. 各个部门中 最高工资中最低的那个部门的 最低工资是多少	
select min(sal)
from emp
where deptno = (
select deptno
from emp
group by deptno
order by max(sal) asc
limit 1
)
-- 21.查询部门号大于20 或者 姓名中包含 a的 员工信息
-- 21.1
select *
from emp
where deptno > 20 or ename Like "%a%";

-- 21.2
select *
from emp 
where deptno > 20
union
select *
from emp
where ename like "%a%";

标签:sal,--,练习,基础,SELECT,emp,mysql,deptno,select
From: https://www.cnblogs.com/paopaoT/p/17357181.html

相关文章

  • Go入门基础03
    函数高级给类型重命名: 函数的参数和返回值都是类型的一部分,函数可以赋值给一个变量1. 例:typeMyFuncfunc(int,int)intMyFunc就是我们将func(int,int)int重新定义了一下类型,以后在定义函数类型的是时候直接使用MyFunc就是代替了func(int,int)int2.例:typeMyint......
  • c++打卡练习(17)
    爱因斯坦数学题:一条长台阶,若每步2阶台阶,则最后剩1阶,若每步3阶台阶,则最后剩2阶,若每步5阶台阶,则最后剩4阶,若每步6阶台阶,则最后剩5阶,若每步7阶台阶,则最后剩6阶,问在1到N的范围内有多少个这样的阶梯数,他们分别是多少?流程图:伪代码:源代码:#include<iostream>usingnamespacestd;int......
  • Vue3 Hooks 的基础用法
    前言Vue3在API设计上引入了类似于ReactHooks的CompositionAPI,可以更方便地实现逻辑的复用和组合。本文将介绍Vue3Hooks的基础用法。基本使用Vue3Hooks中最简单的Hook就是setup。它是一个在组件创建时执行的函数,可以访问组件实例中的属性和方法,同时可以返回一......
  • windows下mysql5.7安装,及python操作mysql
    windows下mysql5.7安装mysql5.7官方下载:https://www.mysql.com/可参考教程:https://blog.csdn.net/qq_39715000/article/details/123534326?注意:一:my.ini配置文件:如果保存目录以t开头,默认会将t转义为空格(解决方法加这个\\):[mysqld]#端口号port=3306#mysql-5.7.27-winx6......
  • mysql主从,django使用多数据库做读写分离
    mysql主从mysql主从搭建的目的1.读写分离2.单个实例并发量低,提高并发量3.只在主库写,读数据都去从库mysql主从原理步骤一:主库db的更新事件(update,insert,delete)被写道binlog步骤二:从库发起连接,连接到主库步骤三:此时主库创建一个binlogdumpthread线程,把binlog的内容发送到......
  • 如何用Python画一只狗狗——turtle基础
    这只小狗主要用了turtle库里的circle()头有些方正,比较自然。话不多说,展示代码:fromturtleimport*pensize(5)seth(0)pd()color('black')circle(20,80)circle(200,30)circle(30,60)circle(200,29.5)circle(20,60)circle(-150,22)circle(-50,10)circle(5......
  • Python基础
    list方法len返回list长度append往list末尾追加元素insert可以通过索引号插入指定位置,如果插入的位置之前没有元素,会追加到该位置myList=[0,1,2]myList.insert(5,5)print(len(myList))print(myList)//4//[0,1,2,5]pop删除list末尾的元素,如果要删除指定......
  • MySQL是什么
    DB哥MySQL高级教程-系统学习MySQL共149课时关注微信公众号免费学:DB哥文末有MySQL高级课程目录MySQL是什么?随着时间的推移,开源数据库在中低端应用中逐渐流行起来,占据了很大的市场份额。开源数据库具有免费使用、配置简单、稳定性好、性能优良等特点,而MySQL数据库正是开源数据库中......
  • mysql面试题
    DB哥MySQL高级教程-系统学习MySQL共149课时关注微信公众号免费学:DB哥文末有MySQL高级课程目录什么是MySQLMySQL是一个关系型数据库,它采用表的形式来存储数据。你可以理解成是Excel表格,既然是表的形式存储数据,就有表结构(行和列)。行代表每一行数据,列代表该行中的每个值。列上......
  • Kotlin基础入门 - 创建、兼容一个属于自己的Kotlin项目
    这应该是我年前就想记录的一个基础入门,但是因为一直比较忙,当时只是做了一个备忘草稿,正文就拖到了现在,趁着有时间,赶紧来帮助一下新入行的朋友…关于为何我把这篇Blog叫做创建、兼容一个属于自己的Kotlin项目?主要是因为在实际开发中会遇到以下俩种项目场景><从0-1的Kot......