由于公司业务需要,需要查询出不同状态下的设备数量:用常规方法,则有多少种状态则需要写多少个SQL。现在用聚合函数,实现一条SQL查询出表中不同状态的设备数量。

<!--查询当前设备类型下设备统计-->
<select id="getDeviceCountByType" parameterType="com.coship.common.dto.ds.DeviceQuantityParam"resultMap="deviceTypeResultMap">SELECTt2.DEVICE_TYPE AS Device_Type,t2.DEVICE_TYPE_NAME AS Device_Type_Name,       IFNULL(SUM(CASE WHEN t1.STATUS='1' THEN 1 ELSE 0 END ),0) AS Alarm,IFNULL(SUM(CASE WHEN t1.STATUS='2' THEN 1 ELSE 0 END ),0) AS Normal,IFNULL(SUM(CASE WHEN t1.STATUS='3' THEN 1 ELSE 0 END ),0) AS Failure,IFNULL(SUM(CASE WHEN t1.STATUS IN ('1','2','3') THEN 1 ELSE 0 END ),0) AS Total
   FROM t_device t1,t_device_type t2 WHERE t1.DEVICE_TYPE_ID = t2.ID<if test="spCode != null and spCode != ''">AND t1.SUPPLIER_ID = #{spCode}</if><if test="deviceType != null and deviceType != ''">and t2.DEVICE_TYPE = #{deviceType}</if>group by t2.DEVICE_TYPE
</select>

IFNULL()的用法

<select id="selectCartProductCount" resultType="int" parameterType="int">select IFNULL(sum(quantity),0) as countfrom immall_cartwhere user_id = #{userId}
</select>

如果 sum 为 null,是不可以传给基本类型 int 的;如果更改返回值类型 int 为 Integer 则又会在 service层报错。怎么办呢?

我们当时是不希望发生报错的啊,利用 IFNULL()函数,赋予一个默认值0,当 sum(quantity) 为 null 时,返回默认值。这样就解决了。

SQL之统计某一状态数量相关推荐

  1. 5-5array统计tcp连接状态数量

    #vim count_tcpconn_status.sh 名字和数组最好有一个区分 如果要持续实时查看执行结果,可以使用watch命令 转载于:https://blog.51cto.com/54509 ...

  2. easy connect 获取服务端配置信息失败_如何统计 Mysql 服务器状态信息?

    最近在看<高性能的 Mysql>一书,下面是关于如何学习统计 Mysql 服务器状态的学习总结,主要是学习使用 SHOW STATUS,SHOW ENGINE INNODB STATUS, ...

  3. 全废话SQL Server统计信息(2)——统计信息基础

    接上文:http://blog.csdn.net/dba_huangzj/article/details/52835958 我想在大地上画满窗子,让所有习惯黑暗的眼睛都习惯光明--顾城<我是一个 ...

  4. Always On可用性组中SQL Server统计信息

    SQL Server统计信息简介 (Introduction to SQL Server Statistics) SQL Server Statistics are an essential part ...

  5. SQL Server统计信息以及如何在SQL中执行更新统计信息

    This article gives a walk-through of SQL Server Statistics and different methods to perform SQL Serv ...

  6. t–sql pl–sql_不正确SQL Server统计信息– SQL查询性能的杀手–基本知识

    t–sql pl–sql 什么是SQL Server统计信息? (What are SQL Server statistics?) SQL Server statistics are a collec ...

  7. SQL汇总统计与CUBE概念

    SQL汇总统计(Group by, ROLLUP, CUBE)与CUBE概念 第一层:[GROUP BY]将一个"数据集"划分成若干个"小区域",然后针对若干个 ...

  8. SQL Server统计信息:问题和解决方式

    SQL Server统计信息:问题和解决方式 参考文章: (1)SQL Server统计信息:问题和解决方式 (2)https://www.cnblogs.com/yutingliuyl/p/7257 ...

  9. SQL语句统计每天、每月、每年的数据

    SQL语句统计每天.每月.每年的数据 1.每年 select year(ordertime) 年, sum(Total) 销售合计 from 订单表 group by year(ordertime) ...

最新文章

  1. 【组队学习】【34期】组队学习内容详情
  2. php for循环执行函数,自执行函数用for结束后面不能访问循环变量
  3. 拥抱大家庭,nodejs走thrift
  4. android任务栈的作用,Android 启动模式以及任务栈
  5. windows查看linux文件中文,Linux 系统下无法查看Windows 中创建的中文文件名
  6. 单身税的时代就要来临,你还没有用Python帮你找一个女朋友吗?
  7. 华为服务器内存位置,服务器上的内存在哪里
  8. cocoStudio UI编辑器设置自定义字体
  9. 互联网公司招聘--今日头条--产品经理-2017年笔试题1
  10. python毕业论文参考文献格式_毕业论文参考文献规范格式
  11. 基于SmartQQ协议的QQ自动回复机器人-1
  12. 2019年末,10 位院士对 AI 的深度把脉(下)
  13. 作品交流:锁相环环路滤波器系数、NCO增益单位、鉴相器输出之间的关系
  14. 4816 江哥的dp题b
  15. iPhone屏幕分辨率
  16. 把酸性体质改变成碱性体质的秘密
  17. U8采购入库单API接口示例(参照采购到货)
  18. SIM卡所能保存的联系人姓名长度研究。
  19. mysql数据库常用存储引擎的区别
  20. mysql group concat 去重,MySQL group_concat() 函数用法

热门文章

  1. DDR4相比DDR3的变更点
  2. 1维数组 2维数组
  3. easyui中文乱码怎么解决_jquery easyui乱码怎么办
  4. 南京大学与东南大学的计算机,南京大学和东南大学对比分析报告
  5. Third season eighteenth episode,hypnotic recording(maybe you can remember 吕子乔)
  6. 十年磨一剑---看中伊之战有感
  7. [英文歌曲]斗士:Fighter
  8. B站上线互动视频功能:仅对粉丝量过万的up主开放
  9. 【Rust日报】2020-11-09 构建可测试性的 Rust 工程
  10. 【算法-面试】区间专题