前言

前两天遇到写sql语句的问题。想了很久,没有解决出来。然后,请教大佬。解决了。。。好吧,话不多说,开始解决吧

准备数据库

CREATE DATABASE /*!32312 IF NOT EXISTS*/`school` /*!40100 DEFAULT CHARACTER SET utf8 */;USE `school`;
/*Table structure for table `deptkpi` */DROP TABLE IF EXISTS `deptkpi`;CREATE TABLE `deptkpi` (`MonthName` varchar(50) NOT NULL,`DeptName` varchar(50) NOT NULL,`KPIValue` int(30) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;/*Data for the table `deptkpi` */insert  into `deptkpi`(`MonthName`,`DeptName`,`KPIValue`) values ('一月','市场部',8000),('二月','信息中心',1500),('一月','信息中心',1000),('二月','市场部',8765),('三月','市场部',90555),('三月','信息中心',800),('四月','市场部',86890),('四月','信息中心',1113),('五月','市场部',78990),('五月','信息中心',3211),('六月','市场部',99999),('六月','信息中心',40000);

在navicat上执行完后就是这样:

看题目要求

  • 我们通过这一张表查询出这两个部门的最大业绩,最大业绩月份,最小业绩月份,总业绩占比

    • 将这个条件分成几个部分查询出来,然后,根据关联关系合并数据

开始动手

  • 先查询出 部门的最大业绩及最大业绩月份

     SELECT deptName,KPIValue '最大业绩kpi',MONTHNAME '最大业绩月份' FROM deptkpi WHERE KPIValue IN (SELECT MAX(KPIValue) FROM deptkpi GROUP BY DeptName)
    
  • 查询出部门的最小业绩,最小业绩月份

     SELECT deptName,KPIValue '最小业绩kpi',MONTHNAME '最小业绩月份' FROM deptkpi WHERE KPIValue IN (SELECT MIN(KPIValue) FROM deptkpi GROUP BY DeptName)
    
  • 查询各个部门占总的比例

    SELECT deptName,SUM(KPIValue)/(SELECT SUM(KPIValue) FROM deptkpi) AS '总业绩占比' FROM deptkpi GROUP BY deptName
    
  • 这样就出来三条sql语句,他们的关系都有 deptName这一列,所以,我们这里使用内连接的方法组合

    SELECT l.*,s.最小业绩kpi,s.最小业绩月份,z.总业绩占比 FROM
    (SELECT deptName,KPIValue '最大业绩kpi',MONTHNAME '最大业绩月份' FROM deptkpi WHERE KPIValue IN (SELECT MAX(KPIValue) FROM deptkpi GROUP BY DeptName)
    ) l
    INNER JOIN (SELECT deptName,KPIValue '最小业绩kpi',MONTHNAME '最小业绩月份' FROM deptkpi WHERE KPIValue IN (SELECT MIN(KPIValue) FROM deptkpi GROUP BY DeptName)
    ) s ON l.deptName = s.deptName
    INNER JOIN (SELECT deptName,SUM(KPIValue)/(SELECT SUM(KPIValue) FROM deptkpi) AS '总业绩占比' FROM deptkpi GROUP BY deptName
    ) z ON s.deptName = z.deptName
    

    运行结果如下图:


    我的问题是出在查询的字段中还可以写查询语句。这点我不清楚,所以最后没有做出来。百度的话,那些sql更加看不懂。

如果有更好的方法,欢迎指正!

sql语句查询部门最大业绩-最小业绩-业绩占比相关推荐

  1. HIVE:窗口函数,用sql语句查询MySQL安装路径和版本

    数据大师: Jmx's Blog | Keep it Simple and Stupid! 猴子 - 知乎公众号(猴子数据分析)著有畅销书<数据分析思维>科普中国专家 回答数 647,获得 ...

  2. Mapinfo Sql语句查询方法

    Mapinfo   Sql语句查询方法 ----曹恒 http://wenku.baidu.com/link?url=ZQL-R7MIF6KW2ZnvvREl7ykIhQ_cExSKLz_6S_PJI ...

  3. Sql语句查询 显示序号

    怎么样用SQL语句查询出来带有序号,不是我们用递增所带的ID号 就是按行数用数字显示出来 序号,id,userid 1 5 aaa 2 6 bbb 3 8 ccc 4 9 ddd 5 17 eee 类 ...

  4. sql语句查询过慢的原因分析

    有时候你在使用sql语句查询数据库,sql语句写得好正确,但则发现执行查询的时候很慢呢?数据量也不是太大,你知道其中的原因吗?本文给大家讲解一下sql查询过慢的48种原因分析,请阅读. 1.没有索引或 ...

  5. thinkphp5基本的一些操作/API友好/获取请求信息(Request)/判断请求类型(GET...)/验证参数数据(Validate)/连接数据库/原生sql语句查询

    文章目录 一.API友好 1.举两个thinkphp5关于API友好的例子 (1)数据输出 (2)错误调试Trace 二.获取请求信息(Request) 1.获取URL信息 2.获取 模块/控制器/操 ...

  6. 一条SQL语句查询数据库中的所有表、存储过程、触发器

    一条SQL语句查询数据库中的所有表.存储过程.触发器 (sysobjects表信息)   该条语句查询返回所有的用户表 select * from sysobjects where xtype='u' ...

  7. 案例:用一条 SQL 语句查询出每门课都大于 80 分的学生姓名

    用一条sql语句查询出每门课都大于80分的学生姓名 首先需要进行分析: 要查询出每门课程都大于80分的学生姓名,因为一个学生有多门课程,所以会出现下面三种情况. 第一可能所有课程都大于80分. 第二可 ...

  8. 如何用SQL语句查询Excel数据

    Q:如何用SQL语句查询Excel数据? A:下列语句可在SQL SERVER中查询Excel工作表中的数据. 2007和2010版本: SELECT *  FROM OpenDataSource(  ...

  9. oracle图书操作、sql语句查询+授权、视图、索引、表操作

    oracle图书操作.sql语句查询+授权.视图.索引.表操作 一.创建一张表book,表结构为(总编号,分类号,书名,作者,出版单位,单价),插入若干记录 二.创建一张表reader,表结构为(借书 ...

最新文章

  1. 【TP3.2】路由匹配和规则
  2. 51Nod-1082 与7无关的数【进制+打表】
  3. oraclemt 无法启动服务_电脑文件无法设置共享的解决方法
  4. Ubuntu系统下载缓慢,以及更新源卡住不动(终极解决方案)
  5. net 中web.config一个配置文件解决方法 (其他配置文件引入方式)
  6. Docker与.Net项目类型
  7. php中session销毁,PHP中session变量的销毁
  8. Microsoft Visual Studio 2010(vs2010) 中文版安装
  9. XXXXRockey4ND加密狗复制
  10. 弹出USB大容量存储设备时出问题 的解决方法
  11. macbook air从win10回到macOS Sierra
  12. PhotoShop基础
  13. P02014026黄一洋————信息论问题回答
  14. 每晚泡脚15分钟,5年下来有哪些变化
  15. 关于判别分析的学习-距离判别法
  16. 解决git pull中 fatal: Not possible to fast-forward, aborting
  17. 内网穿透神器NPS的使用
  18. 网易云音乐中间件改造
  19. 图像比对-感知哈希算法
  20. 建立Windows AD对Kerberos的单向信任(允许使用域账号登录Kerberos集群)

热门文章

  1. 日积月累--exception记录
  2. 将其出版的所有PDF版图书对所有读者免费开放下载
  3. C语言/C++基础之樱花之歌
  4. 一招教你批量查询并设置极兔快递参数
  5. STC51单片机-多功能信号发生器设计-物联网应用系统设计项目开发
  6. 模板方法模式---豆浆机
  7. 如何在「绝地求生」里成功吃鸡?
  8. 计算机基础——常用的Dos命令
  9. 关于《注意力模型--Attention注意力机制》的学习
  10. The Unreasonable Effectiveness of Recurrent Neural Networks