分组查询 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. 100ms的SQL把服务器搞崩溃了

    前言 一个项目上线了两个月,除了一些反馈的优化和小Bug之外,项目一切顺利:前期是属于推广阶段,可能使用人员没那么多,当然对于项目部署肯定提前想到并发量了,所以早就把集群安排上,而且还在测试环境搞了一 ...

  2. pyhon对excel的xls与xlsx的读取,写入

    import shutilimport osfrom openpyxl import load_workbookfrom xlutils.copy import copyimport win32com ...

  3. 深入HTTP请求流程

    1.HTTP协议介绍 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,它是从WEB服务器传输超文本标记语言(HTML)到 ...

  4. Git 上传文件项目到github,gitee详细教程!(本文用的gitee)

    1:安装Git 下载地址:https://git-scm.com/ 2:生成ssh密钥不会的可以去另一篇文章 https://www.cnblogs.com/psfjc/p/15980893.html ...

  5. 『忘了再学』Shell基础 — 14、环境变量(二)

    目录 1.PS1变量的作用 2.PS1变量的查看 2.PS1可以支持的选项 3.PS1环境变量的配置 4.总结 提示: 在Linux系统中,环境变量分为两种.一种是用户自定义的环境变量,另一种是系统自 ...

  6. Elasticsearch(es)介绍与安装

    ### RabbitMQ从入门到集群架构: https://zhuanlan.zhihu.com/p/375157411 可靠性高 ### Kafka从入门到精通: https://zhuanlan. ...

  7. vue同时监听多个参数变化

    computed: { // 同时监听多个参数 toWatch() { const { params1, params2 } = this.observeObj; return { params1, ...

  8. Aged-cat 的 WebServer 配置详细流程

    前言 最近看到一个不错的webserver项目,但是配置过程给的不详细,这里给出详细配置过程 项目地址:https://github.com/Aged-cat/WebServer (感谢老猫大神的项目 ...

  9. 计算机网络 - OSI 7层网络模型各层对应的功能

    应用层 - 负责给应用程序提供统一的接口 表示层 - 负责把数据的解压缩和编码 会话层 - 负责会话的管理(建立和终止) 传输层 - 负责端到端的数据传输 网络层 - 负责数据的路由.转发.分片 数据 ...

  10. App上看到就忍不住点的小红点是如何实现的?

    你有没有发现,我们解锁手机后桌面上App右上角总能看到一个小红点,这就是推送角标.推送角标指的是移动设备上App图标右上角的红色圆圈,圆圈内的白色数字表示未读消息数量.角标是一种比较轻的提醒方式,通过 ...