订单根据部门和状态分组统计数量

业务: 有一个订单表,里面有个部门字段订单状态的字段,现在需要根据部门分组统计不同订单状态的数量

表结构

订单状态是字典 1 待审核 2 待发货 3 已发货 4 已签收

DROP TABLE
IFEXISTS order_info;
CREATE TABLE order_info (`order_id` INT NOT NULL AUTO_INCREMENT COMMENT '订单号',`order_status` VARCHAR ( 32 ) DEFAULT '' COMMENT '订单状态',`dept` VARCHAR ( 32 ) DEFAULT '' COMMENT '部门',PRIMARY KEY ( order_id )
) COMMENT = '订单信息表';INSERT INTO `my-tool`.`order_info` (`order_id`, `order_status`, `dept`) VALUES (null, '1', 'A部门');
INSERT INTO `my-tool`.`order_info` (`order_id`, `order_status`, `dept`) VALUES (null, '4', 'C部门');
INSERT INTO `my-tool`.`order_info` (`order_id`, `order_status`, `dept`) VALUES (null, '2', 'A部门');
INSERT INTO `my-tool`.`order_info` (`order_id`, `order_status`, `dept`) VALUES (null, '2', 'A部门');
INSERT INTO `my-tool`.`order_info` (`order_id`, `order_status`, `dept`) VALUES (null, '3', 'A部门');
INSERT INTO `my-tool`.`order_info` (`order_id`, `order_status`, `dept`) VALUES (null, '4', 'A部门');
INSERT INTO `my-tool`.`order_info` (`order_id`, `order_status`, `dept`) VALUES (null, '1', 'B部门');
INSERT INTO `my-tool`.`order_info` (`order_id`, `order_status`, `dept`) VALUES (null, '2', 'B部门');
INSERT INTO `my-tool`.`order_info` (`order_id`, `order_status`, `dept`) VALUES (null, '2', 'C部门');
INSERT INTO `my-tool`.`order_info` (`order_id`, `order_status`, `dept`) VALUES (null, '1', 'C部门');

查询sql

思路: 先按部门分组 查询同一个状态的数量 ,然后结果拼接 ,再竖表转横表

SELECTa.dept AS '部门',max( CASE a.order_status WHEN '1' THEN a.status_count ELSE 0 END ) AS '待审核',max( CASE a.order_status WHEN '2' THEN a.status_count ELSE 0 END ) AS '待发货',max( CASE a.order_status WHEN '3' THEN a.status_count ELSE 0 END ) AS '已发货',max( CASE a.order_status WHEN '4' THEN a.status_count ELSE 0 END ) AS '已签收'
FROM(SELECTIFNULL( order_status, '1' ) order_status,COUNT( order_status ) status_count,dept FROMorder_info WHEREorder_status = '1' GROUP BYdept UNION ALLSELECTIFNULL( order_status, '2' ) order_status,COUNT( order_status ) status_count,dept FROMorder_info WHEREorder_status = '2' GROUP BYdept UNION ALLSELECTIFNULL( order_status, '3' ) order_status,COUNT( order_status ) status_count,dept FROMorder_info WHEREorder_status = '3' GROUP BYdept UNION ALLSELECTIFNULL( order_status, '4' ) order_status,COUNT( order_status ) status_count,dept FROMorder_info WHEREorder_status = '4' GROUP BYdept ) a
GROUP BYa.dept

结果

mysql横竖表转换相关推荐

  1. 笔试 -- SQL语句之横竖表转换

    文章目录 一.表结构 二.竖表转横表 1-1 case when then 1-2 pivot 三.横表转竖表 1-1 UNION ALL 1-2 unpivot 最近笔试中有 [将竖表转换为横表]的 ...

  2. mysql横竖表查询

    也是最近看到的一个面试题,第二题我还没做出来,如果有大佬路过,求帮助看看 题目如下: 现有SaleInfo存储销售人员日常销售记录 表结构如下 表 UserInfo存储销售人员信息 第一题:统计201 ...

  3. mysql数据库隐式表_解析MySQL隐式转换问题

    一.问题描述 root@mysqldb 22:12: [xucl]> show create table t1\G *************************** 1. row **** ...

  4. mysql宽表优化_将MySQL的窄表转换成宽表的方法

    将MySQL的窄表转换成宽表的方法 在扩展设计中,使用窄表可以很方便的增加新的项.如果用宽表,就会需要修改表结构,很不方便. 而使用宽表在查询过滤数据的时候会比窄表方便很多,数据的记录量也会少很多. ...

  5. php转换excel文件怎么打开方式,用PHP将mysql数据表转换为excel文件格式_php

    详细内容如下: $DB_Server = "localhost"; $DB_Username = "mydowns"; $DB_Password = " ...

  6. mysql 隐式失误_评“MySQL 隐式转换引起的执行结果错误”

    今天看到一篇关于MySQL隐式转换引发执行结果错误的文章: ====================================================================== ...

  7. MySQL的表空间管理

    表空间: MySQL没有真正意义上的表空间管理. MySQL的Innodb包含两种表空间文件模式,默认的共享表空间和每个表分离的独立表空间. 一般来说,当数据量很小的时候建议使用共享表空间的管理方式. ...

  8. MySQL远程表访问设置

    MySQL远程表访问设置 本博文转载自          http://blog.itpub.net/9406448/viewspace-223946 ---- 官网上的信息 使用MySQL FEDE ...

  9. MySQL - 库表设计之IP和TIMESTAMP的处理

    文章目录 学习更多干货 Pre TIMESTAMP IP 总结 学习更多干货 带你搞定MySQL实战,轻松对应海量业务处理及高并发需求,从容应对大场面试 Pre MySQL - 高效的设计MySQL库 ...

最新文章

  1. 【线段树】【FeyatCup】——2.法法塔的奖励
  2. mats显存测试软件linux环境,Mats显存检测软件下载-Mats显存检测软件最新版下载-微侠手游网...
  3. iptables防火墙配置工具ShoreWall的安装和使用实例
  4. 掌握 Ajax,第 1 部分: Ajax 入门简介
  5. Linux下的网络桥接与链路聚合
  6. 使用PDF-XChange Editor为PDF文件添加签名(图片+签名)
  7. 烽火狼烟丨Microsoft多个安全漏洞风险提示
  8. ARKit玩起来 - AR卡通秀-史小川-专题视频课程
  9. html tooltips效果,div+css样式自制带小三角的tooltips效果
  10. mtk9652对比鸿鹄818哪个好
  11. r语言中which的使用_大数据分析R语言RStudio使用教程
  12. 原生 js、javaScript 处理十位数(带有小数点的浮点数时间戳)、十三位数、时间戳, 将时间戳转换成 年、月、日、时、分、秒、毫秒、正常的日期格式
  13. java annotation class,Java Class类 isAnnotation()方法及示例
  14. 如何在C语言中添加自己的函数
  15. Jenkins定时发布项目
  16. 学生上计算机课的好处,孩子上网课有什么优点
  17. Srt字幕文件只保留文字
  18. VM虚拟机 -Mac 镜像安装(黑苹果系统)
  19. 如何让 SaaS 从好模式变成好生意
  20. 论文笔记《Visual Dialog》

热门文章

  1. xml开发笔记(一):tinyXml2库介绍、编译和工程模板
  2. mybatis----xml常用的标签
  3. QImage 大小缩放
  4. R语言做GGEbiplot_基于R语言的GGE双标图在大豆区试中的应用
  5. 【webservice】Two classes have the same XML type name(转)
  6. [宝塔版] 如何搭建一个微信小程序开源商城?
  7. 百度账号因安全问题被限制登录,该如何申诉?
  8. 利用mybatis拦截器注解处理sql
  9. STM32的USART串口通信
  10. JZ77 按之字形顺序打印二叉树