问题背景

出现这个问题的原因是在测试过程中,对于我要分组的类型在不同人存数据时出现了空白值和NULL两种情况(胡闹!),导致我之前的分组查询会出现NULL一个分组,空白值一个分组,由于业务上的需求是没有值的归类为其他(虽然在真实使用时99.99999%不会出现这个null或者空白值乱传问题,但强迫症的我决定重拳出击),为了不改变我的代码整体结构,我决定在SQL上做文章。

废话不多说,先贴解决方案

SELECTCOUNT (ID) AS fileCount,SUM (file_storage) AS fileStorage,
CASE
COALESCE (file_type, '') //如果是MySQL直接写 file_type即可
WHEN ''
THEN'other'             //要将空白值替换成的值  (这里如果不需要替换值也可以使用NULLIF,看清楚是NULLIF)
ELSE COALESCE (file_type, '') //在MySQL中相当于IFNULL
END fileType            //如果字段需要与实体类中对应,可在这里设置,直接写别名就可以哦!
FROMcloudoffice.file_virtual_info
//如果需要条件的话,在这里写WHERE啊什么的,自行发挥,跟平时写都一样的
GROUP BY
COALESCE (file_type, '')

在这里我对这个SQL进行一下解释说明:
1.COALESCE函数:由于我使用的是Postgre数据库,所以与MySQL存在差异,如果你使用的是MySQL数据库的话,替换成IFNULL函数即可(如果不需要替换值话,也可以使用NULLIF,看仔细是NULLIF);
2.如果你是用的是MySQL数据库的话,在CASE后面可以直接写字段名即可;
3.如果你想给这个字段起别名的话,在END后面添加别名即可;
4.如果在MySQL中出现了如下问题(切记是MYSQL中,我只在MYSQL中出现了该问题);

Expression #2 of SELECT list is not in GROUP BY clause and contains
nonaggregated column ‘xxx’ which is not functionally
dependent on columns in GROUP BY clause; this is incompatible with
sql_mode=only_full_group_by

可以尝试在SQL中运行下方语句重新进行设置(大多数情况下这样做是可以解决的)

set @@global.sql_mode
='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

切记设置之后要重启你的数据库工具!!!
(我并没有过多解释所出现的这个问题(不求甚解嘛嘻嘻),感兴趣的话,可以复制搜索一下我上面贴出的问题(中间那条),有很多文章讲其他解决方案和出现的原因)

如何在SQL分组查询时将空白值和NULL值分为一组相关推荐

  1. 如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集

    如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集?(2006-12-14 09:25:36) 与这个问题具有相同性质的其他描述还包括: 如 ...

  2. hive Sql列转行使用explode的注意事项-null值处理

    hive Sql列转行使用explode的注意事项-null值处理 日常工作中,我们经常会用Lateral View 结合explode将数据炸裂,但是该方法对应explode的内容是有非null限制 ...

  3. SQL分组查询后取每组的前N条记录

    本文由 Leon 同学授权发布 这个公众号的关注者除了大部分是 Android 工程师之外还有部分后端以及前端同学,我鼓励也非常欢迎大家来投稿,其实我们并不需要把自己限定在某个领域,多学学其他语言也是 ...

  4. sql分组查询的使用

    理解group by语义 个人认为sql中的group by和join是两大难点,因为它们转换了原来的表结构,group把表按某些字段统计缩小,join则使用笛卡尔积将多个表连接展开(关于表的连接,请 ...

  5. 深入理解sql分组查询(group by)

    理解group by语义 个人认为sql中的group by和join是两大难点,因为它们转换了原来的表结构,group把表按某些字段统计缩小,join则使用笛卡尔积将多个表连接展开(关于表的连接,请 ...

  6. sql分组查询每组最新一条数据

    在开发过程中,写sql语句时往往会遇到分类查询最新的一条数据或某一列最大数据,此时就需要用到连表查询和分组查询, 先分组查询出每组最大的id,再进行连表查询 SELECT id,title,u_id, ...

  7. ORACLE SQL分组查询某列或某几列重复信息数量

    实际开发中经常会需要分组查询某列或者某几列重复的数据量,比如说统计彩票开奖号码历史出现的次数等. 以下SQL以数据库本地EMP表数据为例 --查询所有员工信息 SELECt * FROM EMP; - ...

  8. sql语句查询时,where条件同时使用and和or

    sql查询时,where条件后即有and和or,要使用括号将需要区分的括起来. where set_id = 11 and (year1 is null or year2 is null or yea ...

  9. sql语法基础,sql分组查询

    01分组查询–group by 格式: SELECT 列名1,列名2,... FROM 表名 GROUP BY 列名1,列名2.... 例一,按照商品种类统计一下行数 SELECT product_t ...

最新文章

  1. IOS属性类型的讲解
  2. Thanks, TuSimple!
  3. linux文件系统添加pcm,嵌入式linux中PCM音频编程实践
  4. uniapp中使用微信jssdk
  5. 个人帐目管理系统java_Java 项目 个人帐目管理系统
  6. java从控制台读取字符串_从控制台读取Java字符串
  7. Linux shell (一)
  8. 《Python编程初学者指南》——第1章 启程:Game Over程序 1.1 剖析Game Over程序
  9. matlab能打开mdl文件吗,simulink打开mdl文件的问题
  10. ABC互联 shopex网店主机 试用
  11. 如何做好高端的总结汇报PPT呢?
  12. web网页前端学习 案例一之制作网页表格
  13. 全局偏移表(GOT)和过程链接表(PLT)
  14. 日期转换 EEE MMM dd HH:mm:ss zzz yyyy
  15. 各个操作系统中怎样设置电脑的颜色保护眼睛
  16. 第31章 MySQL 处理重复数据教程
  17. 分布式系统的知识点-架构设计
  18. Winform 俄罗斯方块儿练习
  19. Python学习周期一般多长?需要多久?
  20. MOSFET管基本原理与应用

热门文章

  1. ltrim函数php,PHP ltrim() 函数
  2. php ltrim redis,LTRIM命令_视频讲解_用法示例-redis编程词典-php中文网
  3. 网络抓包原理及Fiddler的使用
  4. TopFlash钓鱼
  5. 你应该知道的21大Python量化交易工具
  6. python语言中、用来表示赋值的符号是_第二章Python语言基础知识
  7. 接入阿里iconfont图标库详细教程
  8. Automapper如何全局配置map条件过滤null值空值对所有映射起效
  9. 50系列1分钟破5亿!离开华为的荣耀依然强势
  10. MATLAB与 *.m 文件关联