From 1ff855fede56886634eba821e240aa211268f832 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A2=853?= <12071605+yangmei3@user.noreply.gitee.com> Date: Thu, 19 Oct 2023 16:53:22 +0000 Subject: [PATCH] 20231020 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 杨梅3 <> --- .../\345\244\215\344\271\240.md" | 119 ++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 "27 \346\235\250\346\242\205/\345\244\215\344\271\240.md" diff --git "a/27 \346\235\250\346\242\205/\345\244\215\344\271\240.md" "b/27 \346\235\250\346\242\205/\345\244\215\344\271\240.md" new file mode 100644 index 0000000..6adc74b --- /dev/null +++ "b/27 \346\235\250\346\242\205/\345\244\215\344\271\240.md" @@ -0,0 +1,119 @@ +```mysql +-- Sql12练习 +-- 建表语句: + +-- 执行以下SQL,建表插数: + +create database Apple charset utf8; +use Apple; +-- 部门表 +create table dept( + deptno int primary key auto_increment, -- 部门编号 + dname varchar(14) , -- 部门名字 + loc varchar(13) -- 地址 +) ; +-- 员工表 +create table emp( + empno int primary key auto_increment,-- 员工编号 + ename varchar(10), -- 员工姓名 - + job varchar(9), -- 岗位 + mgr int, -- 直接领导编号 + hiredate date, -- 雇佣日期,入职日期 + sal int, -- 薪水 + comm int, -- 提成 + deptno int not null, -- 部门编号 + foreign key (deptno) references dept(deptno) +); +insert into dept values(10,'财务部','北京'); +insert into dept values(20,'研发部','上海'); +insert into dept values(30,'销售部','广州'); +insert into dept values(40,'行政部','深圳'); +insert into emp values(7369,'刘一','职员',7902,'1980-12-17',800,null,20); +insert into emp values(7499,'陈二','推销员',7698,'1981-02-20',1600,300,30); +insert into emp values(7521,'张三','推销员',7698,'1981-02-22',1250,500,30); +insert into emp values(7566,'李四','经理',7839,'1981-04-02',2975,null,20); +insert into emp values(7654,'王五','推销员',7698,'1981-09-28',1250,1400,30); +insert into emp values(7698,'赵六','经理',7839,'1981-05-01',2850,null,30); +insert into emp values(7782,'孙七','经理',7839,'1981-06-09',2450,null,10); +insert into emp values(7788,'周八','分析师',7566,'1987-06-13',3000,null,20); +insert into emp values(7839,'吴九','总裁',null,'1981-11-17',5000,null,10); +insert into emp values(7844,'郑十','推销员',7698,'1981-09-08',1500,0,30); +insert into emp values(7876,'郭十一','职员',7788,'1987-06-13',1100,null,20); +insert into emp values(7900,'钱多多','职员',7698,'1981-12-03',950,null,30); +insert into emp values(7902,'大锦鲤','分析师',7566,'1981-12-03',3000,null,20); +insert into emp values(7934,'木有钱','职员',7782,'1983-01-23',1300,null,10); +-- 完成以下练习题 + +-- 1、列出最低薪金大于1500的各种工作。sal +select job,sal from emp where sal >1500; +-- 2、列出在部门 "销售部" 工作的员工的姓名,假定不知道销售部的部门编号。 +select deptno from dept where dname='销售部'; +select * from emp e left join dept d on e.deptno=d.deptno; + +SELECT + * +FROM + emp e + LEFT JOIN dept d ON e.deptno = d.deptno +WHERE + dname = '销售部'; +-- 3、列出薪金高于公司平均薪金的所有员工。 +select * from emp; +select sal+ifnull(comm,0),ename from emp where sal > (select avg(sal+ifnull(comm,0)) from emp); + +-- 4、列出与"周八"从事相同工作的所有员工。 +select job from emp where ename='周八'; +select ename,job from emp where job=(select job from emp where ename='周八'); + +-- 5、列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。 +select sal+ifnull(comm,0),ename,deptno from emp where deptno=30; + +-- 6、列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。 +SELECT + ename, + sal +FROM + emp +WHERE + sal + ifnull( comm, 0 ) > + ( SELECT max( sal + ifnull( comm, 0 )) FROM emp WHERE deptno = 30 ); +-- 7、列出在每个部门工作的员工数量、平均工资、平均服务年限门 +SELECT DISTINCT + deptno, + count( ename ) over ( PARTITION BY deptno ), + floor( + avg( sal ) over ( PARTITION BY deptno )), + floor( avg( datediff( now(), hiredate )/ 365 ) over ( PARTITION BY deptno ) ) +FROM + emp; +-- 8、列出所有员工的姓名、部名称和工资。 +select ename,deptno,sal from emp; +-- 9、列出所有部门的详细信息和部门人数。 +SELECT DISTINCT + count( ename ) over ( PARTITION BY deptno ), + e.deptno, + dname, + loc +FROM + dept d + LEFT JOIN emp e ON d.deptno = e.deptno; + +-- 10、列出各种工作的最低工资。 +select distinct job, min(sal) over(partition by job ) from emp; + +-- 11、列出各个部门的 经理 的最低薪金。 +SELECT DISTINCT + deptno, + min( + sal + ifnull( comm, 0 )) over ( PARTITION BY deptno ) +FROM + emp +WHERE + job = '经理'; +-- 12、列出所有员工的年工资,按年薪从低到高排序。 +select (sal+ifnull(comm,0)*12) A from emp order by A; + + + +``` + -- Gitee