_”表示一个字符串 – 查询emp表中薪资大于4000和薪资小于2000的员工,显示姓名、薪资。...重要提示: a) 可以使用count(*)统计记录行数 b) 多个聚合函数可以一起查询 – 例如:根据部门进行分组,统计每个部门员工人数和平均薪资 select dept, count(*) 员工人数...上面小写的a和b就是A和B表的别名: – 查询部门和员工两张表 select * from dept,emp; 上面查询的结果中存在大量错误的数据, 如果想正确显示部门及部门对应的员工,可以通过where...from emp e1, emp e2 where e1.topid = e2.id; 4、(分组、聚合函数)列出最低薪资大于1500的各种职位,显示职位和该职位最低薪资 – 先查询出各种职位的最低薪资...显示部门编号、员工数量,平均薪资。
下面我来举个列子: 题1:请用一条sql语句,统计薪资大于薪资最高的员工所在部门的平均工资和薪资最低的员工所在部门的平均工资的平均工资的员工信息。...但是查询是有条件的,那么是什么条件呢?-- 我们在一层一层的往里渗透分析: “统计[薪资 大于] (薪资最高的员工所在部门的平均工资和薪资最低的员工所在部门的平均工资的平均工资 ) 的员工信息。”...我们再来分析: “统计薪资 大于 ( [‘薪资最高的员工所在部门的平均工资‘ ] 和 [ ‘薪资最低的员工所在部门的平均工资’ ] 的 平均工资 ) 的员工信息。”...那么接下来我们就要转为内部的具体分析了,首先拿出代表x和y的文字: ‘薪资最高的员工所在部门的平均工资‘ 和 ‘薪资最低的员工所在部门的平均工资’ ; 通过上面文字可以看出,这其实也是两个查询的表达式...上面的x这句话已经被拆的最后只剩下“薪资最高的员工”了,所以?号所代表当然是全公司工资最高的那个人了所在的部门了。 最高薪资的语句是:select max(sal) from emp);所以“?”
一、题目 有员工薪资表t_salary_026,包含员工ID(emp_id),部门ID(depart_id),薪水(salary),请计算去除最高最低薪资后的平均薪水;(每个部门员工数不少于3人) +-...,去掉这些行,考察点为row_number()开窗函数; 2.本题的难点在于同时去掉最高和最低,所以需要按照不同的排序进行处理,所以需要进行两次开窗,排序; 3.去除最高最低薪资之后,按照部门分组进行分组取平均即可...; 维度 评分 题目难度 ⭐️⭐️⭐️ 题目清晰度 ⭐️⭐️⭐️⭐️⭐️ 业务常见度 ⭐️⭐️⭐️⭐️ 三、SQL 1)分别按照正序和倒序进行开窗,得到部门最高最低薪资记录 select emp_id...1-1 2)去掉最高最低薪资,这里只能有第一行,不能取排序最大值进行去重,那样处理起来太复杂(不能确定排序最大值是多少,这也是进行两次开窗排序的原因) select emp_id, depart_id...2.如果最高和最低薪资不止一人,该如何处理?
薪资等级表 字段分别是:等级、最低工资、最高工资。 以上表中的数据大家可以自己修改和填充 工具和sql文件在公众号 推荐学java 回复navicat获取。...找出每个员工的部门名称以及工资等级,显示员工姓名、薪资、部门名称、薪资等级。...找出每个员工的部门名称以及工资等级,显示员工姓名、薪资、领导名、部门名称、薪资等级。...(select) where 子句中的子查询 案例: 找出比最低工资(员工的工资,不是工资登记表中的最低工资)高的员工姓名和工资。...案例: 将 job 为 四绝之一 和 Java全栈工程师 的员工查出来,显示员工名、职位名。
staff group by post; #2.查询每个部门的最高薪水 select post,max(salary) from staff group by post; #3.查询每个部门的最低薪水...查询公司内男员工和女员工的个数 mysql> select group_concat(sex) from staff; 4....employee和department表,并且以age字段的升序方式显示。...#例子: #1.查询大于所有人平均年龄的员工名与年龄 #思路:先查询出所有人的平均年龄,然后再和原来的员工表进行比较 mysql> select name,age from employee where...(2)将查出的结果作为临时表,再对根据临时表的dep_id和employee的dep_id作为筛选条件将employee表和临时表进行内连接。
) AS '最低薪水', AVG(salary) AS '平均薪水' FROM emp; #3 查询薪水大于4000员工的个数 SELECT COUNT(*) FROM emp WHERE salary...#2.查询每个部门的平均薪资 #3.查询每个部门的平均薪资, 部门名称不能为null #1....查询有几个部门 SELECT dept_name AS '部门名称' FROM emp GROUP BY dept_name; #2.查询每个部门的平均薪资 SELECT dept_name AS '部门名称...', AVG(salary) AS '平均薪资' FROM emp GROUP BY dept_name; # 查询平均薪资大于6000的部门 -- 需要在分组后再次进行过滤,使用 having SELECT...比如: 银行的转账业务,张三给李四转账500元 , 至少要操作两次数据库, 张三 -500, 李四 + 500,这中 间任何一步出现问题,整个操作就必须全部回滚, 这样才能保证用户和银行都没有损失.
2).子查询部分 【注意事项】: 子查询一定需要被定义/包裹在小括号内部,可以认为是显示的提升了代码执行的优先级 需求1: 查询薪资比Abel的高的有谁?...分析: ①.先查询出Abel的薪资是多少?...min(salary) from employees ); 2).查询平均工资高于公司平均工资的部门有哪些 select department_id,avg(salary) from employees...20号部门最低工资的部门id和最低工资 select department_id,min(salary) from employees where department_id is not null...两张表中都存在, 所以需要显示的告诉编译器,我从哪张表中获取数据内容的!
函数根据处理的数据分为单行函数和聚合函数(组函数),组函数又被称作聚合函数,用于对多行数据进行操作,并返回一个单一的结果,组函数仅可用于选择列表或查询的having子句;单行函数对单个数值进行操作,并返回一个值...求各个部门的平均薪资 7 select e.deptno,avg(e.sal) 8 from emp e 9 group by e.deptno 10 11 -- 需求:求各个部门的月收入平均值...1 -- group by having 2 -- 查询部门平均薪资大于3000的部门 3 select e.deptno 4 from emp e 5 group by e.deptno 6...having avg(e.sal) > 3000 7 8 -- 查询部门薪资大于3000的雇员按部门分组的平均薪资 9 select e.deptno,avg(e.sal) 10 from emp...1 --薪资大于1200的雇员的平均薪资大于1500的部门,按照平均薪资升序排序 2 select e.deptno,avg(e.sal) 3 from emp e 4 where e.sal >
: 1).主查询部分 2).子查询部分 【注意事项】: 子查询一定需要被定义/包裹在小括号内部,可以认为是显示的提升了代码执行的优先级 需求1: 查询薪资比Abel的高的有谁?...分析: ①.先查询出Abel的薪资是多少?...min(salary) from employees ); 2).查询平均工资高于公司平均工资的部门有哪些 select department_id,avg(salary) from employees...20号部门最低工资的部门id和最低工资 select department_id,min(salary) from employees where department_id is not null...两张表中都存在, 所以需要显示的告诉编译器,我从哪张表中获取数据内容的!
1显示每个部门的男生人数、女生人数和总人数 2显示每个部门的男生人数、女生人数和总人数,且该部门的额女生人数>=1,且按部门标号降序排序 drop table kingstar; select * from...1 else 0 end)女生人数, count(*)总人数 from kingstar GROUP BY dept_no; #2显示每个部门的男生人数、女生人数和总人数,且该部门的额女生人数>=1...1列出薪资高于公司平均薪资的所有员工 2列出薪资高于在部门30工作的所有员工的薪金的员工姓名和薪金 3列出在每个部门工作的员工数量,平均工资和平均服务期限 #发现avgTime,在看看表中的数据,原来...4列出所有部门的详细信息和部门人数 5列出各种工作的最低工资 6列出各个部门MANAGER(经理)的最低薪金 #1列出薪资高于公司平均薪资的所有员工 select * from emp where sal...in(select(sal) from emp); #2列出薪资高于在部门30工作的所有员工的薪金的员工姓名和薪金 select e.ename,e.sal,d.dname from emp e join
部门薪酬幅度 ?...上面是各个部门的薪资的最高值和最低的公司,我们希望通过数据图表的分析来判断,那个部门的薪资幅度最大,并且与平均值做对比,上面的是个幅度的薪资表,是在原始的数据表上,通过数据透视出来的。...我们会通过组合图来进行薪资幅度的图表的设计,如下图:这个图表设计的关键就是两个数据的叠加,然后把叠加数据的颜色填充改成和背景一样的颜色。 ?...2、各个部门 不同区间的新词占比 这个数据透视表,是对工资区间做了个数据的分类,然后对各个部门的薪资人数最成分的对比,来分析每个部门在每个区间的薪资占比。 ?...3、各个薪资区间人数占比,这个表格是对薪资最分组,然后以薪资为列,去分析各个薪资区间的人数,最高,最低工资。 ?
varchar(10) DEFAULT NULL, PRIMARY KEY (`deptno`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; 实际练习 -- 1.查询各部门中薪资最低和最高的数据...job为CLERK的最高薪资和最低薪资. select deptno as '部门编号', max(sal) as '最高薪资', min(sal) as '最低薪资' from emp where job...emp表中最低薪资小于2000的部门且job为clerk的部门编号、最低薪资和最高薪资. select b.deptno as '部门号',max(sal) as '最高工资',min(sal) as...group by b.deptno; Empty set (0.03 sec) -- 4.查询出emp表中薪资小于2000的且job为clerk的部门编号、最低薪资和最高薪资. select deptno...where deptno=(select b.deptno as deptno from emp as b where b.ename = 'buddy'); * 需要注意的是在子查询中给表取别名的时候不能和前面的主查询的别名一致
取每个部门的最高工资 取每个部门的员工数 取男人数和女人数 小窍门:‘每’这个字后面的字段,就是我们分组的依据 #4、大前提: 可以按照任意字段分组,但是分组完毕后,比如group...teacher | 7 | | 公关部 | 1 | +-----------+-----------+ 4 rows in set (0.00 sec) 3 查询公司内男员工和女员工的个数...teacher | 1000000.31 | | 公关部 | 7300.33 | +-----------+-------------+ 4 rows in set (0.00 sec) 6 查询岗位名以及各岗位的最低薪资...16800.026000 | | teacher | 151842.901429 | +-----------+---------------+ 2 rows in set (0.00 sec) 3 查询各岗位平均薪资大于...--------+-----------+--------------+------------+--------+-----------+ 18 rows in set (0.00 sec) 2 查询各岗位平均薪资大于
,部门 的人数. 19、列出最低薪金大于 1500 的各种工作及从事此工作的全 部雇员人数. 20、列出在部门"SALES"工作的员工的姓名,假定 不知道销售部的部门编号. 21、列出薪金高于公司平均薪金的所有员工...30 工作的所有员工的薪金的员工 姓名和薪金.部门名称. 25、列出在每个部门工作的员工数量,平均工资和平均服务期 限. 26、列出所有员工的姓名、部门名称和工资。...哪些人的薪水在部门的平均薪水之上 思路: 第一步:找出部门的平均薪资 第二步:找出高于平均薪资的人 3、取得部门中(所有人的)平均的薪水等级 tip: 平均的薪水等级:先计算每一个薪水的等级...7、求平均薪水的等级最低的部门的部门名称 tip: 平均薪水最低的对应的等级一定是最低的 思路: 第一步:平均薪水最低的 第二步:找出对应的等级 8、取得比普通员工(员工代码没有在...思路: 第一步:找出job是CLERK的所有的人名和部门名称: 第二步:每个部门的人数 第三步:将上边两个表做连接: 19、列出最低薪金大于 1500 的各种工作及从事此工作的全
) 输出:10号部门共2人,薪资和是:22000 2.定义方法selectDeptno,方法接收员工姓名和员工集合,方法中根据员工姓名查询员工的部门号,并返回部门号 示例: ...selectDeptno("黄盖",empList) 返回:20 3.定义方法selectAvgSql,方法接收部门号、员工集合,方法中查询并打印指定部门号的最高薪资、和平均薪资。 ...示例: selectAvgSql(20,empList) 输出:20号部门最高薪资是:18000,平均薪资是:15000 4.定义方法betterThanEmp,方法有2个参数,员工...5.定义方法betterThanSal,方法有接收员工集合,方法中打印:比所有员工平均薪资高的员工姓名,员工薪资。...、部门名称、最高薪资、最高薪资的员工姓名 2.定义方法printDept,方法接收部门集合,员工集合,方法中根据部门号匹配,打印曹操的部门号,部门名称 3.定义方法printMaxManager,方法接收部门集合
查询岗位名以及岗位包含的所有员工名字 2. 查询岗位名以及各岗位内包含的员工个数 3. 查询公司内男员工和女员工的个数 4. 查询岗位名以及各岗位的平均薪资 5....查询岗位名以及各岗位的最高薪资 6. 查询岗位名以及各岗位的最低薪资 7. 查询男员工与男员工的平均薪资,女员工与女员工的平均薪资 ? ? ?...查询各岗位平均薪资大于10000且小于20000的岗位名、平均工资 ? ?...查询所有员工信息,先按照age升序排序,如果age相同则按照hire_date降序排序 2. 查询各岗位平均薪资大于10000的岗位名、平均工资,结果按平均薪资升序排列 3....查询各岗位平均薪资大于10000的岗位名、平均工资,结果按平均薪资降序排列 ? ?
group by deptno; 例:找出每个部门平均薪资,要求显示平均薪资高于2500的。...,显示员工名和部门名?...一条SQL中内连接和外连接可以混合。都可以出现。 例:找出每个员工的部门名称以及工资等级,要求显示员工名,部门名,薪资,薪资等级?...要求显示员工名、领导名、部门名、薪资、薪资等级?...(select). 2.where子句中的子查询 例:找出比最低工资高的员工的薪资? 实现思路: 第一步:查询最低工资是多少?
查询岗位名以及岗位包含的所有员工名字 2. 查询岗位名以及各岗位内包含的员工个数 3. 查询公司内男员工和女员工的个数 4. 查询岗位名以及各岗位的平均薪资 5....查询岗位名以及各岗位的最高薪资 6. 查询岗位名以及各岗位的最低薪资 7. ...查询各岗位内包含的员工个数小于2的岗位名、岗位内包含员工名字、个数 3. 查询各岗位平均薪资大于10000的岗位名、平均工资 4....查询所有员工信息,先按照age升序排序,如果age相同则按照hire_date降序排序 2. 查询各岗位平均薪资大于10000的岗位名、平均工资,结果按平均薪资升序排列 3....查询各岗位平均薪资大于10000的岗位名、平均工资,结果按平均薪资降序排列 #题目1 mysql> select * from employee ORDER BY age asc,hire_date desc
,多表查询其实就是连接查询,连接查询分为内连接查询和外连接查询 内连接查询:只有满足条件的数据才会被显示 外连接查询:可以控制不满足条件的数据是否显示 DEMO:查询出雇员的编号,姓名,职位,薪资...,工资等级,部门的位置和部门的编号 发现emp表中的张三没有查询到,原因是以上多表查询是一个内连接查询,内连接查询的特征是满足过滤条件的数据才会被显示 对于emp表中的张三数据来说,DEPTNO...、全外连接查询 左外连接查询:可以让左表不满足条件的数据也显示 右外连接查询:可以让右表不满足条件的数据也显示 全外连接查询:可以让左表和右边不满足条件的数据都显示出来 DEMO:使用左外连接对上个...如果eExpression1和eExpression2的结果皆为null值,则NVL()返回NULL DEMO:查询雇员的最高工资和最低工资 DEMO:查询雇员的平均工资和工资之和...ORDER BY 排序字段 排序方式ASC/DESC DEMO:查询出每个职位的平均工资 DEMO:查询出每个部门的名称及其人数 DEMO:查询出每个部门的名称、人数、以及每个部门的雇员的最高和最低工资
图片缩写全称和对应 SQL:现在有这样一个公司部门人员各个信息的数据库,包含了如下几个表: departments 部门表字段:dept_emp 雇员部门表字段:dept_manager领导部门表字段:...employees雇员表字段:salaries薪资表字段:titles岗位表字段:基本查询-查询departments表的所有数据select * from departments;字段查询-查询employees...gender='M';排序-查询departments表里的所有部门并按部门序号进行从小到大排序展示select * from departments order by dept_no;若是想要按部门序号从大到小进行排序的话就可以使用...employees中字母顺序显示名字在“Anneke”(包括)和“Chirstian”(包括)的人select * from employees where first_name between 'Anneke...having sum(salary)>1000000;COUNT、AVG-取salaries表中薪资排名前100名的平均薪资(需要利用子查询)select avg(salary) from (select
领取专属 10元无门槛券
手把手带您无忧上云