分组查询 group by

  • 将某个字段的相同值分为一组,对其他字段的数据进行聚合函数的统计,称为分组查询

  • 单字段分组查询

    • 1.查询每个部门的平均工资

      select dept_id,avg(sal) from emp group by dept_id;

    • 2.查询每个职位的最高工资

      select job, max(sal) from emp group by job;

    • 3.查询每个部门的人数

      select dept_id,count(*) from emp group by dept_id;

    • 4.查询每个职位 中工资大于1000的人数

      select job,count(*) from emp where sal>1000 group by job ;

    • 5.查询每个领导手下的人数

      select mgr,count(*) from emp where mgr is not null and mgr <>0 group by mgr;

    • 练习

      select job,avg(sal) from emp where avg(sal)>2000 group by job;
      
      select job,avg(sal)  from emp group by job having avg(sal) >2000;
      
      select job, count(*) c from emp group by job having c > 1;
      
      select dept_id,sum(sal) s from where mgr is not null emp group by dept_id having s>5000;
      
      select dept_id,avg(sal) where sal between 1000 and 3000 group by dept_id having>=2000;
      
      select * from emp where sal>(select avg(sal) from emp where dept_id=2);
  • 多字段分组查询

    • 1.查询每个部门每个主管手下的人数;

      select job,,count(*) where mgr is null group by dept_id,

  • having

    • 后跟聚合函数的条件;

    • 不能单独使用,常和group by组队出现,跟在其后面

      select job count(*) c from emp group by job having c>1000;

字段查询顺序

  • select 查询字段信息 from 表名 where 普通字段条件 group by

    分组字段名 having 聚合函数条件 order by 排序字段名 limit 跳过条数,请求条数;

子查询(嵌套查询)

  1. 查询工资大于2号部门平均工资的员工信息

  2. 查询员工高于程序员最高工资的员工信息

    select  * from emp where sal>(select  max(sal) from emp where job='程序员');
  3. 查询工资最高的员工信息

    select  name,max(sal) from emp group by name;
  4. 查询和孙悟空相同工作的员工信息

    select job from emp where name='孙悟空';
    
    select  * from emp where job=(select job from emp where name='孙悟空') and name<>'孙悟空';
  5. 查询那最低工资员工的同事们的信息,(同事指同一部门)

    select min(sal) from emp ;
    
    select  dept_id from emp where sal=(select min(sal) from emp)
    
    select * from where dept_id=(select dept_id from sal=(select min(sal) from emp));

关联查询之等值连接

  • 格式: select * from A,B where 关联关系

  • 1.查询每个员工 姓名和对应的部门名字

    select e.name,d.name from emp e,dept d where e.dept_id=d.id and sal  > 2000;

关联查询之内连接

  • 格式: select * from A join B on 关联关系

  • 1.查询工资高于2000的员工姓名和对应的部门名

     select e.name,d.name from emp e join dept d on e.dept_id =d.id where sal>2000;
    
     select e.name ,d.name from emp e join dept d on  e.dept_id=d.id where sal >2000;
    
    
    1. 查询有领导并且和销售有关的员工姓名,工作,部门名,部门地点

关联查询之外连接

  • 等值连接和内连接查询到的都是两张表的交集数据;

  • 外连接查询的是一张表 全部和另一张表的交集数据

  • 格式 select * from A left join B on 关联关系

    1.查询所有员工姓名和对应的部门名
    
    select e.name,d.name  from emp e left join dept d on e.dept_id=d.id;
    
    select e.name,d.name from emp  emp e left join dept d on e.dept_id=id;
    
    select e.name,d.name from emp e  left  join  dept d on e.dept_id=d.id;
    
    2.查询所有部门的名称/地点和对应的员工姓名和工资
    
    select d.name,d.loc,e.name,e.sal from emp e left join dept d on e.dept_id =d.id;

11 MySQL_分组查询和关联查询的更多相关文章

  1. Mongoose如何实现统计查询、关联查询

    [问题]Mongoose如何实现统计查询.关联查询  发布于 4 年前  作者 a272121742  13025 次浏览 最近业务上提出一个需求,要求能做统计,我们设计的文档集,统计可能跨越的文档会 ...

  2. MySQL查询(关联查询)

    一.mysql查询与权限 (一)数据库关联查询 **内连接查询(inner join)** 查询两个表共有的数据,交集 SELECT * FROM tb1 INNER JOIN tb2 ON 条件 所 ...

  3. mysql系列九、mysql语句执行过程及运行原理(分组查询和关联查询原理)

    一.背景介绍 了解一个sql语句的执行过程,了解一部分都做了什么,更有利于对sql进行优化,因为你知道它的每一个连接.where.分组.子查询是怎么运行的,都干了什么,才会知道怎么写是不合理的. 大致 ...

  4. Mybatis高级查询之关联查询

    learn from:http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html#Result_Maps 关联查询 准备 关联结果查询(一对一) resul ...

  5. day95:flask:SQLAlchemy数据库查询进阶&关联查询

    目录 1.数据库查询-进阶 1.常用的SQLAlchemy查询过滤器 2.常用的SQLAlchemy查询结果的方法 3.filter 4.order_by 5.count 6.limit&of ...

  6. Mysql子查询、关联查询

    mysql中update.delete.install尽量不要使用子查询 一.mysql查询的五种子句         where(条件查询).having(筛选).group by(分组).orde ...

  7. Mysql - 查询之关联查询

    查询这块是重中之重, 关系到系统反应时间. 项目做到后期, 都是要做性能测试和性能优化的, 优化的时候, 数据库这块是一个大头. sql格式: select 列名/* from 表名 where 条件 ...

  8. SQL笛卡尔积查询与关联查询性能对比

    首先声明一下,sql会用略懂,不是专家,以下内容均为工作经验,聊以抒情. 今天帮忙验证同事发布的端口时,查看了一下相关sql内容,发现其使用的sql语句会导致笛卡尔积现象,为了帮其讲解进行了如下分析: ...

  9. 【sql】关联查询+表自关联查询

    表: 经销商 dealer   字段 uid  parent_uid  name 联系人 contact  字段 uid  dealer_id  contact_main 需求: 想要查询到经销商的信 ...

随机推荐

  1. 【ACM程序设计】最小生成树 Prim算法

    最小生成树 ● 最小生成树的定义是给定一个无向图,如果它任意两个顶点都联通并且是一棵树,那么我们就称之为生成树(Spanning Tree).如果是带权值的无向图,那么权值之和最小的生成树,我们就称之 ...

  2. SpringJDBC和事务控制

    SpringJDBC和事务控制 主要内容 1.基本配置 <!--依赖导入--> <dependencies> <!-- 添加相关的依赖坐标 --> <!-- ...

  3. [Istio是什么?] 还不知道你就out了,一文40分钟快速理解

    @ 目录 前言 Istio是什么? 服务网格是什么? 应用场景 为什么使用Istio? 流量管理介绍 istio架构 Envoy Sidecar Istiod 虚拟服务(VirtualService) ...

  4. 使用NFS作为Glance存储后端

    NFS服务介绍 NFS网络文件系统提供了一种在类UNIX系统上共享文件的方法.目前NFS有3个版本:NFSv2.NFSv3.NFSv4.CentOS7默认使用NFSv4提供服务,优点是提供了有状态的连 ...

  5. Go语言学习——函数二 defer语句

    函数 package main import "fmt" // 函数:一段代码的封装 func f1(){ fmt.Println("Hello 中国!") } ...

  6. 深入C++06:深入掌握OOP最强大的机制

    深入掌握OOP最强大的机制 1. 继承的基本意义 类与类之间的关系:①组合:a part of ... 一部分的关系:②继承: a kind of ... 属于同一种的关系: 继承的本质:a. 代码的 ...

  7. FinClip 前端之 VUE 核心原理总结

    小程序框架有很多,都是支持前端JavaScript语言的,也是支持 vue.js 框架的.FinClip 小程序是兼容各家平台的.所以在学习了框架使用之后的进阶就要熟悉框架的底层原理. 1.数据响应式 ...

  8. vue项目引入TinyMCE

    1.安装 npm install @tinymce/tinymce-vue@3.0.1 -S 2.配置 <template> <!-- 富文本 --> <div> ...

  9. MySQL(8) - MySQL的事务机制

    MySQL数据库的事务机制 1.1.事务的概念和特性 1.2.事务的隔离级别 repeatable read是mysql默认的事务隔离级别 #事务A #事务A,临时修改工资,未commit, STAR ...

  10. Flask_WTF实现表单

    Flask_WTF实现表单可分为六个步骤: ①导入FlaskForm扩展包(from flask_wtf import FlaskForm) ②导入StringField,PasswordField, ...