mysql基础篇之分组查询(代码片段)

nuist__NJUPT nuist__NJUPT     2023-01-31     664

关键词:

MySQL基础篇之分组查询

简单分组函数的使用:

#简单分组函数的使用
  select max(salary) from employees;
  select min(salary) from employees;
  select avg(salary) from employees;
  select count(salary) from employees;
  select sum(salary) from employees; 

也可以这样写:

select max(salary) 最高工资, min(salary) 最低工资, sum(salary) 工资和, avg(salary) 平均工资, count(salary) 个数
 from employees;

注意:sum(),svg()函数只能处理数字类型
max(),min(),count()函数可以处理任意类型
以上分组函数忽略null值

分组函数和distinct搭配使用:

#分组函数和distinct搭配使用
  select count(distinct salary) from employees;

注意:一般使用count(*)统计行数
和分组函数一同查询的字段要求是group by后的字段

查询员工表中最大入职时间和最小入职时间的天数差:

#查询员工表中最大入职时间和最小入职时间的天数差
    select datediff(max(hiredate),min(hiredate))
    from employees;

查询部门编号为90的员工个数:

 #查询部门编号为90的员工个数
    select count(*)
    from employees
    where department_id = 90;

查询每个部门的员工的平均工资:

 #查询每个部门的员工的平均工资
    select avg(salary)
    from employees
    group by department_id ;

查询每个工种的最高工资:

#查询每个工种的最高工资
    select max(salary), job_id as 工种
    from employees
    group by job_id;

查询每个位置上的部门个数:

#查询每个位置上的部门个数
    select count(*), location_id
    from departments
    group by location_id;

查询邮箱种包含a字符的,每个部门的平均工资:

#查询邮箱种包含a字符的,每个部门的平均工资
    select avg(salary), department_id
    from employees
    where email like '%a%'
    group by department_id;

查询每个领导手下有奖金的员工的最高工资:

 #查询每个领导手下有奖金的员工的最高工资
    select max(salary), manager_id
    from employees
    where salary is not null
    group by manager_id;

查询哪个部门的员工个数大于2:
分组后的筛选

#查询哪个部门的员工个数大于2
    select count(*), department_id
    from employees
    group by department_id
    having count(*) > 2 ;

查询每个工种有奖金的员工的最高工资大于12000的员工编号和最高工资:

#查询每个工种有奖金的员工的最高工资大于12000的员工编号和最高工资
    select job_id, max(salary)
    from employees
    where commission_pct is not null
    group by job_id
    having max(salary) > 12000;

查询领导编号大于102的每个领导手下的最低工资大于5000的领导编号以及最低工资:

 #查询领导编号大于102的每个领导手下的最低工资大于5000的领导编号以及最低工资
 select manager_id, min(salary)
    from employees
    where manager_id > 102
    group by manager_id
    having min(salary) > 5000;

注意:分组函数做条件,一定属于分组后的筛选,需要放到having字句中,能用分组前筛选的,尽量使用分组钱筛选

按员工姓名的长度分组,查询每一组的员工个数,筛选出员工个数大于5的:

#按员工姓名的长度分组,查询每一组的员工个数,筛选出员工个数大于5的
    select count(*)
    from employees
    group by length(last_name)
    having count(*) > 5;

按多个字段分组
查询每个部门,每个工种的员工的平均工资:

#按多个字段分组
     #查询每个部门,每个工种的员工的平均工资
     select avg(salary) 平均工资, department_id 部门, job_id 工种
     from employees
     group by 部门, 工种;

注意:group by 支持单个字段分组,也支持多个字段分组,用逗号隔开即可,也可以添加排序,排序是放在整个分组查询之后的。

查询各个管理者手下的员工最低工资,其中最低工资不能低于6000,没有管理者的员工不计算在内:

 #查询各个管理者手下的员工最低工资,其中最低工资不能低于6000,没有管理者的员工不计算在内
    select min(salary), manager_id
    from employees
    where manager_id is not null
    group by manager_id
    having min(salary) >= 6000;

查询所有部门的编号,员工数量和工资平均值,并按平均工资排序:

 #查询所有部门的编号,员工数量和工资平均值,并按平均工资排序
     select department_id, count(*), avg(salary)
     from employees
     group by department_id
     order by avg(salary);

选择每个工种下的员工数:

 #选择每个工种下的员工数
    select count(*)
    from employees
    group by job_id;

mysql基础篇之索引上--04(代码片段)

Mysql基础篇之索引上--04引言索引的常见模型InnoDB的索引模型索引维护小结补充引言提到数据库索引,我想你并不陌生,在日常工作中会经常接触到。比如某一个SQL查询比较慢,分析完原因之后,你可能就会说“给... 查看详情

mysql基础篇之常用基本命令(代码片段)

MySQL基础篇之常用基本命令DB:database,数据库,存储数据的仓库,保存一系列有组织的数据。DBMS:数据库管理系统,又称为数据库软件,用于管理数据库中的数据。SQL:结构化查询语言,用来和DBMS进行通... 查看详情

mysql基础(代码片段)

...和退出★MySQL的常见命令和语法规范五、DQL语言的学习★基础查询★条件查询★排序查询★常见函数★分组函数★分组查询★连接查询★子查询√分页查询★union联合查询√六、DML语言的学习★插入 查看详情

mysql基础篇之索引下--05(代码片段)

Mysql基础篇之索引下--05前言覆盖索引最左前缀原则索引下推小結前言在上一篇文章中,我和你介绍了InnoDB索引的数据结构模型,今天我们再继续聊聊跟MySQL索引有关的概念在开始这篇文章之前,我们先来看一下这个问... 查看详情

mysql基础篇总结(代码片段)

目录一、SQL的语言分类二、MySQL的常用命令三、DQL语句1、基础查询1)语法2)示例2、条件查询1)语法2)筛选条件的分类3、常见函数1)单行函数2)分组函数4、分组查询1)语法2)注意5、连接查询1&... 查看详情

mysql基础篇之全局锁和表锁--06(代码片段)

Mysql基础篇之全局锁和表锁--06前言全局锁表级锁小结前言今天我要跟你聊聊MySQL的锁。数据库锁设计的初衷是处理并发问题。作为多用户共享的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则。而锁... 查看详情

mysql基础之分页查询(代码片段)

MySQL基础之分页查询应用场景:当要显示的数据一页显示不全,需要分页提交SQL请求。语法规则:select查询列表from表where筛选条件groupby分组字段having分组后的筛选orderby排序的字段limitoffset,size;offset:要显示条目的其实... 查看详情

mysql原理篇之事务--08(代码片段)

...点小结引言上一篇文章。本文为事务原理篇,如果对事务基础概念还有不清楚的,建议看一下事务基础篇,假设我们有如下两条sql语句://大忽悠转账给小朋友10元//大忽悠账号扣除10元UPDATEaccountSETbalance=balance-10WHEREid 查看详情

mysql.mysql基础(代码片段)

MySQL一,计算字段①拼接字段:②使用别名二,数据处理函数①文本函数②日期和时间处理函数③数值处理函数④聚集函数三,数据分组①创建分组②过滤分组③SELECT子句顺序四,子查询①基本使用②将子查询... 查看详情

mysql基础篇之事务真的是隔离的吗?--08(代码片段)

Mysql基础篇之事务真的是隔离的吗?--08引言“快照”在MVCC里是怎么工作的?更新逻辑小结引言我在第3篇文章和你讲事务隔离级别的时候提到过,如果是可重复读隔离级别,事务T启动的时候会创建一个视图read-view&... 查看详情

mysql原理篇之索引不懂不要瞎用---04(代码片段)

Mysql原理篇之索引不懂不要瞎用---04索引的代价B+树索引适用的条件全值匹配匹配左边的列匹配列前缀匹配范围值精确匹配某一列并范围匹配另外一列用于排序使用联合索引进行排序注意事项不可以使用索引进行排序的几种情... 查看详情

mysql数据篇之多表操作-----保姆级教程(代码片段)

多表操作外键约束添加外键语法注意表与表之间的关系一对多的关系一对多的建表原则多对多的关系多对多的建表原则一对一的例子一对一的建表原则多表案例分析多表查询多表查询分类1.连接查询交叉连接:crossjoin内连接:i... 查看详情

好玩的es--第四篇之聚合查询和集群(代码片段)

好玩的ES--第四篇之聚合查询和集群聚合查询简介测试数据使用根据某个字段分组求最大值求最小值求平均值求和整合应用集群集群Cluster相关概念集群<cluster>节点<node>索引<Index>映射<Mapping>文档<Document>分片&l... 查看详情

mysql查询之分组查询(代码片段)

一、分组按照字段分组,表示此字段相同的数据会被放到一个组中分组后,只能查询出相同的数据列,对于有差异的数据列无法出现在结果集中可以对分组后的数据进行统计,做聚合运算语法如下:select列1,列2,聚合...from表名grou... 查看详情

easyclick之mysql分组查询(代码片段)

EasyClick之MySQL分组查询分组查询介绍分组查询就是将查询结果按照指定字段进行分组,字段中数据相等的分为一组。分组查询基本的语法格式如下:GROUPBY列名[HAVING条件表达式][WITHROLLUP]说明:列名:是指按照指定字段的值进... 查看详情

mysql——分组查询(代码片段)

7.分组查询7.1groupby7.2having7.3select语句总结7.分组查询  分组查询主要涉及到两个子句,分别是:groupby和having。  在实际的应用中,可能有这样的需求,需要先进行分组,然后对每一组的数据进行操作,... 查看详情

mysql-面试-dql(代码片段)

...oupby分组字段having分组之后的条件orderby排序limit分页限定;基础查询--查询姓名和年龄SELECTNAME,--姓名age--年龄FROMstudent;--学生表--去除重复的结果集SELECTDISTINCTaddressFROMstudent;SELECTDISTINCTaddress,NAME 查看详情

mysql基础篇之事务隔离---03(代码片段)

Mysql基础篇之事务隔离---03引言隔离性与隔离级别事务隔离的实现事务的启动方式小结补充引言提到事务,你肯定不陌生,和数据库打交道的时候,我们总是会用到事务。最经典的例子就是转账,你要给朋友小王转... 查看详情