分组查询 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. Linux screen命令详解

    开源Linux 长按二维码加关注~ 上一篇:局域网IP冲突罪魁祸首是谁? 很多时候,我们都需要执行一些需要很长时间的任务.如果这时候,你的网络连接突然断开了,那么你之前所做的所有工作可能都会丢失,所做 ...

  2. content应用

  3. 关于 MyBatis-Plus 分页查询的探讨 → count 都为 0 了,为什么还要查询记录?

    开心一刻 记得上初中,中午午休的时候,我和哥们躲在厕所里吸烟 听见外面有人进来,哥们猛吸一口,就把烟甩了 进来的是教导主任,问:你们干嘛呢? 哥们鼻孔里一边冒着白烟一边说:我在生气 环境搭建 依赖引入 ...

  4. zabbix-agent python脚本侦听服务器异常登录,并告警

    py脚本 import re,subprocess,time,datetime #gpasswd -a zabbix adm def ftime(a): a = a.replace('Jan','01 ...

  5. 最佳案例 | 游戏知几 AI 助手的云原生容器化之路

    作者 张路,运营开发专家工程师,现负责游戏知几 AI 助手后台架构设计和优化工作. 游戏知几 随着业务不断的拓展,游戏知几AI智能问答机器人业务已经覆盖了自研游戏.二方.海外的多款游戏.游戏知几研发团 ...

  6. nginx 源码安装配置详解(./configure)

    在"./configure"配置中,"--with"表示启用模块,也就是说这些模块在编译时不会自动构建,"--without"表示禁用模块, ...

  7. 「ARC138E」Decreasing Subsequence(n logn 做法)

    考虑一张 \(n\) 个点的图(\(V=\{0,1,\cdots,n\}\)):点 \(i\) 连向 \(a_i-1\),即 \(\text{index}\) 连向 \(\text{value}\). ...

  8. MTK 虚拟 sensor bring up (pick up) sensor1.0

    pick up bring up sensor1.0 1.pick up对比 2.SCP 1.添加驱动文件 2.添加编译环境(打开开关) 注:编译过程中如果显示内存不够 3.修改底层数据上报方式 3. ...

  9. python实现一个加密的文字处理器

    这是一个类似于记事本的文字处理器.与正常的记事本不同的是,它会将文本文档进行加密,确保无法被常规的程序打开. 由于本人是一位业余编程爱好者,对于"python之禅"之类的规则比较不 ...

  10. ElasticSearch6.4.2

    做一个简单的API记录 1.依赖为6.4.2  比较老的版本 2.指定ES集群,可接多个Put(); Setting setting=Setting.builder().put("clust ...