简述问题“统计最新时刻处于某一状态的设备的数量”

1. 首先子查询结果,可以看到每个设备最新的状态信息

 

2.1 在子查询的基础上,对设备状态进行分组,进行统计每个状态的设备数量

 2.1.1 可以看到处于'火警'状态的数量是2,没有问题,但是看下一张图

  

 2.1.2 可以看到处于'故障'状态的数量是(n/a),此处便出现问题,如果你将此值返回,service层则会报nullpointexception,进行try...catch可以解决

  

  serviceImpl层处理方式

  

2.2 在子查询的基础上,不进行分组,直接统计每个状态的数量信息,可以得到正确结果,count如果没有查询到数据,则返回的默认值是0(火警的就不再演示)

  

  

结论:

  1.子查询中:group by分组和order by排序如果一起使用的话,进行排序的是分组之后的数据

  2.外层查询:当进行分组之后进行count(*)查询,当查询不到时,返回的默认值是(n/a),需要在逻辑层进行判断;

        不进行分组,使用count(*)查询,此时查询不到的话,返回的默认值是0。

        

 

MySQL数据库Group by分组之后再统计数目Count(*)与不分组直接统计数目的区别的更多相关文章

  1. MySql数据库GROUP BY使用过程中的那些坑

    MySql数据库GROUP BY使用过程中的那些坑 GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组. 特别注意: group by 有一个原则,就是 select 后面的所有 ...

  2. MySql数据库执行insert时候报错:Column count doesn't match value count at row 1

    遇到这个问题之后,第一反应就是前后列数不等造成的,但是我检查SQL之后,发现列数是相同得,但是插入还是有问题,然后又写了简单得SQL只插入不为空得字段,执行还是报这个错,最后请教了高人,指点之后,大概 ...

  3. 浅析MySQL使用 GROUP BY 分组聚合与细分聚合

    原创文章,转载请注明出处:http://www.cnblogs.com/weix-l/p/7521278.html: 若有错误,请评论指出,谢谢! 1. 聚合函数(Aggregate Function ...

  4. mysql获取group by的总记录行数方法

    mysql获取group by内部可以获取到某字段的记录分组统计总数,而无法统计出分组的记录数. mysql的SQL_CALC_FOUND_ROWS 使用 获取查询的行数 在很多分页的程序中都这样写: ...

  5. mysql数据库分组(GROUP BY)查询实例

    1.使用松散(Loose)索引扫描实现 GROUP BY 何谓松散索引扫描实现 GROUP BY 呢?实际上就是当 MySQL 完全利用索引扫描来实现 GROUP BY 的时候,并不需要扫描所有满足条 ...

  6. Mysql学习总结(41)——MySql数据库基本语句再体会

    1.数据定义语言(DDL):定义和管理数据对象,比如建立数据库.数据表 数据操作语言(DML):用于操作数据库对象中的包含的数据. 数据查询语言(DQL):用于查询数据库对象中包含的数据,能够对表进行 ...

  7. Mysql数据库版本高低引起的group by问题

    低版本的Mysql,group by限制性比较小,在进行group by时,select的对象可包含多个,但是换成高版本5.6以上好像,使用group by 以后,select的对象必须也已经被聚合, ...

  8. Mysql 使用Group 和Case When统计数据

    项目是基于:thinkcmf的,新的需求是对各栏目的文章数量进行统计 SQl很简单,先根据分类ID进行分组,然后再通过CASE WHEN 再统计不同文章状态数量 ) as count , =已审核 , ...

  9. MySQL之——GROUP BY分组取字段最大值

    转载自:http://blog.csdn.net/l1028386804/article/details/54657412 假设有一个业务场景,需要查询用户登录记录信息,其中表结构如下: CREATE ...

随机推荐

  1. scrapy抓取中国新闻网新闻

    目标说明 利用scrapy抓取中新网新闻,关于自然灾害滑坡的全部国内新闻:要求主题为滑坡类新闻,包含灾害造成的经济损失等相关内容,并结合textrank算法,得到每篇新闻的关键词,便于后续文本挖掘分析 ...

  2. Linux的用户切换、修改用户的用户名和密码

    一.用户切换 "$":普通用户提示符 "#":root用户提示符  1.普通用户到root: 方式一:命令:su然后输入root密码 此种方式只是切换了root ...

  3. Lambda入门,看这一篇幅就够了

    jdk1.8中的lambda表达式学习笔记 一.引入一个例子 我们写一个多线程的例子,如下:采用实现Runable接口的方式 package cn.lyn4ever.lambda; public cl ...

  4. php 开山篇

    由韩顺平老师讲解的 php课程体系 初级课程只能是静态页面开发,不能动态的使用,只是一个界面 学完之后脑海中 应该有的体系~

  5. java 小程序分析:参数传递

    public class Test{ public static void main (String [] ABC){ StringBuffer a = new StringBuffer(" ...

  6. sina中的附件图片处理

    这样写就会频繁的创建和销毁对象 因为setPhotos这个方法调用频繁 如果在里面直接用for循环创建9个UIImageView如果因为cell重用 比如在上一个cell中本来就有UIImageVie ...

  7. Java继承、构造、重写

    Music mu=new Music(); Musc m=mu;//地址一样   继承:Java只支持单继承,不支持多继承. Java支持多层(重)继承(继承体系). 如果类之间存在着:is a 的关 ...

  8. Python中的Tcp协议的应用之Tcp服务端程序开发

    TCP通信协议是面向连接的可靠的网络通信协议. 网络间想要进行数据传输必须要用到socket,socket翻译过来叫做套接字,其主要作用是不同设备或同一台设备之间的进程通信工具. Python中的Tc ...

  9. [TimLinux] Python IDE工具

    1. 首推IDE工具PyCharm JetBrains公司推出的系列IDE工具中支持Python编译语言的开发工具,基本上可以认为是行业第一IDE工具了,分为社区版和专业版,可以创建纯Python单文 ...

  10. dockerfile 最佳实践及示例

    Dockerfile 最佳实践已经出现在官方文档中,地址在 Best practices for writing Dockerfiles.如果再写一份最佳实践,倒有点关公门前耍大刀之意.因此本篇文章是 ...