MySQL查询练习题1.平均工资2.查询各部门的总薪水3.查询总薪水排名第二的部门4.查询姓名重复的员工信息5.查询各部门薪水大于900的男性员工的平均薪水

news/2024/7/7 21:50:07

创建一个员工表emp,包含字段:姓名name,性别sex,部门depart,工资salary

 create table emp(
     name varchar(30) not null,
     sex varchar(30) not null,
     depart int not null,
     salary int not null
     );

插入数据打印为

mysql> insert into emp values
    -> ('张三','男',1,1000),
    -> ('李艾','男',3,3000),
    -> ('李离','男',2,2000),
    -> ('王五','男',3,5000),
    -> ('妹妹','女',2,4000),
    -> ('姐姐','女',1,6000),
    -> ('女老板','女',1,9000);

了解group by

在MySQL中,GROUP BY子句的主要作用是根据一个或多个列对结果集进行分组,以便对每个分组执行聚合函数(如COUNT()SUM()AVG()MAX()MIN()等)。

1. 基本分组与聚合

最常见的用法是结合聚合函数对某一列或多列进行分组,并计算每组的聚合值。

SELECT department, COUNT(*) as num_employees
FROM employees
GROUP BY department;

这查询会按照 department 列的值对员工进行分组,并计算每个部门的员工数量。

2. 多列分组

你可以按照多个列的组合进行分组。

SELECT department, position, COUNT(*) as num_positions
 FROM employees 
 GROUP BY department, position;

这个查询会先按照 department 列的值进行分组,然后在每个部门内部再按照 position 列的值进行分组,最后计算每个部门中每个职位的数量。

3. 与HAVING子句结合使用

HAVING 子句用于过滤分组后的结果。它通常与 GROUP BY 一起使用,以基于聚合函数的结果来过滤分组。

​​​​​​SELECT department, AVG(salary) as avg_salary
FROM employees 
GROUP BY department 
HAVING avg_salary > 50000;

这个查询会计算每个部门的平均工资,但只返回那些平均工资超过 50000 的部门。

4. 与ORDER BY结合使用

你可以使用 ORDER BY 子句对分组后的结果进行排序。

SELECT department, COUNT(*) as num_employees
FROM employees
GROUP BY department
ORDER BY num_employees DESC;

这个查询会按照员工数量降序排列部门。

5. 在分组中使用表达式

你可以在 GROUP BY 子句中使用表达式或函数来对结果进行分组。

SELECT YEAR(hire_date) as hire_year, COUNT(*) as num_hires
FROM employees
GROUP BY YEAR(hire_date);

这个查询会按照员工入职年份对员工进行分组,并计算每年的入职员工数量。

查询男女员工的平均工资

 select sex,avg(salary) from emp
   where sex in('男','女') 
   group by sex;

 

查询各部门的总薪水

select depart ,sum(salary) from emp 
  group by depart;

 

查询总薪水排名第二的部门

select depart ,sum(salary) from emp 
  group by depart 
  order by sum(salary) desc --按照薪水降序
  limit 1 offset 1;--分页一个数据占一页,找排名第二就跳过第一页数据

查询姓名重复的员工信息

select * from emp 
  where name in(
    select name from emp --查找出重复的姓名
    group by name 
    having count(*)>1
  );

 

查询各部门薪水大于900的男性员工的平均薪水

select depart,avg (salary) from emp
  where sex= '男'and salary>900 
  group by depart;


http://lihuaxi.xjx100.cn/news/2215634.html

相关文章

TCP与UDP案例

udp不会做拆分整合什么的 多大就是多大

ARM32开发--电源管理单元

知不足而奋进 望远山而前行 目录 文章目录 前言 学习目标 学习内容 PMU 电源域 VDD/VDDA域 备份域 1.2V域 省电模式 睡眠模式 深度睡眠模式 待机模式 几种模式总结 WFI和WFE指令 案例需求 模式初始化 源码 总结 前言 在嵌入式系统中,有效的电池管…

力扣1631.最小体力消耗路径

力扣1631.最小体力消耗路径 二分答案 判断是否有一条边权小于mid的路径bfs判断路径 class Solution {int dx[4] {1,0,-1,0},dy[4] {0,1,0,-1};public:int minimumEffortPath(vector<vector<int>>& heights) {int m heights.size();int n heights[0].siz…

【JKI SMO】框架讲解(一)

JKI State Machine是一款易于使用且功能强大的状态机模板&#xff0c;可以作为界面或者仪器工作流程的基础框架&#xff0c;但是他不能处理复杂系统的多任务并发机制&#xff0c;因为他是只能处理单个进程。 随之&#xff0c;JKI推出了基于面向对象封装的SMO框架&#xff0c;是…

创建阿里云的免费镜像仓库

1、登录 阿里云 首先进入阿里云的官网&#xff0c;如果没有注册的需要先注册&#xff0c;这里就不过多的讲解了。 2、搜索 登录完毕后点击右上角的控制台 进入管理页面。或者直接在搜索框中输入容器镜像服务 点击进入 这里我是已经开通过了&#xff0c;如果你还没有开通的…

图像处理与视觉感知复习--图像压缩

文章目录 图像压缩系统的组成三种基本的数据冗余计算哈夫曼编码计算算术编码离散傅里叶变换和离散余弦变换的异同点 图像压缩系统的组成 三种基本的数据冗余 编码冗余 如果一个图像的灰度级编码&#xff0c;使用了多余实际需要的编码符号&#xff0c;就称该图像包含编码冗余。…

面向对象的三大特性与类图

1. 面向对象编程的三大特点 Object-oriented programming (OOP) is a paradigm centered around the concept of objects, which can contain data and code to manipulate that data. The three major characteristics of object-oriented programming are encapsulation, in…

苹果WWDC 2024 带来的 AI 风暴:从生产力工具到个人助理,AI 将如何融入我们的生活?

2024年6月5日&#xff0c;苹果WWDC 2024全球开发者大会如约而至&#xff0c;带来了众多令人兴奋的新功能和新产品。其中&#xff0c;AI 技术的全面融入无疑是最引人注目的亮点。从 iOS、iPadOS 到 macOS&#xff0c;再到 Siri 和开发者工具&#xff0c;苹果正在将 AI 融入到其生…