having查询不含null的集合

前言

对分组后的数据进行过滤,我们可能有点头疼,因为分组后,每个组的记录可能又不同

我们可以借助having对分组的数据进行去除null值的操作

准备数据库脚本

DROP TABLE IF EXISTS tbl_student_submit_log;
CREATE TABLE tbl_student_submit_log (id int(8) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键',sno varchar(12) NOT NULL COMMENT '学号',dept varchar(50) NOT NULL COMMENT '学院',submit_date DATE COMMENT '提交日期',PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='学生报告提交记录表';insert into tbl_student_submit_log values
(1,'20200607001', '理学院', '2020-12-12'),
(2,'20200607002', '理学院', '2020-12-13'),
(3,'20200608001', '文学院', null),
(4,'20200608002', '文学院', '2020-12-22'),
(5,'20200608003', '文学院', '2020-12-22'),
(6,'20200612001', '工学院', null),
(7,'20200617001', '经济学院', '2020-12-23');

需求

按dept进行分组查询记录数,但是实际情况有的组里面有的学生还没有提交

MariaDB [test]> select dept , count(1) from tbl_student_submit_log group by dept;
+----------+----------+
| dept     | count(1) |
+----------+----------+
| 工学院   |        1 |
| 文学院   |        3 |
| 理学院   |        2 |
| 经济学院 |        1 |
+----------+----------+
4 rows in set (0.000 sec)

现在我们需要从这张表里找出哪些学院的学生全部都提交了报告

分析过程

`如果只是用 WHERE submit_date IS NOT NULL 条件进行查询,那文学院也会被包含进来,结果就不正确了

正确的做法应该先以 dept 进行分组(GROUP BY),然后对组进行条件的过滤`

sql的实现

实现1

SELECT dept
FROM tbl_student_submit_log
GROUP BY dept
HAVING COUNT(*) = COUNT(submit_date);-- 呈现的效果+----------+
| dept     |
+----------+
| 理学院   |
| 经济学院 |
+----------+
2 rows in set (0.000 sec)

实现2

SELECT dept
FROM tbl_student_submit_log
GROUP BY dept
HAVING COUNT(*) = SUM(CASE WHEN submit_date IS NOT NULL THEN 1ELSE 0 END);-- 呈现的效果+----------+
| dept     |
+----------+
| 理学院   |
| 经济学院 |
+----------+
2 rows in set (0.001 sec)

having查询不含null的集合相关推荐

  1. mybatis mysql查询树形结构_MyBatis collection 集合嵌套查询树形节点

    原标题:MyBatis collection 集合嵌套查询树形节点 MyBatis collection 集合 MyBatis 是数据持久层框架,支持定制化 SQL.存储过程以及高级映射.尤其强大在于 ...

  2. mybatis 取查询值_MyBatis面试题集合,90%会遇到这些问题

    点击蓝字关注我们吧! 1.#{}和${}的区别是什么? ${}是Properties文件中的变量占位符,它可以用于标签属性值和sql内部,属于静态文本替换,比如${driver}会被静态替换为com. ...

  3. ES(Elasticsearch)基本查询总结(含docker安装,python操作)

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 官网:https://www.elastic.co/guide/index.html 搜索语法:https://www.elastic.co/guid ...

  4. 处理数字_7_含NULL值的列的聚合

    含NULL值的列的聚合 需求描述 需求:验证行NULL的列的聚合函数的计算结果. 解决方法:通过MIN.MAX.SUM.AVG.COUNT(*)来完成. 注: 数据库数据集SQL脚本详见如下链接地址 ...

  5. ssm框架数据查询一直为null

    对于ssm框架中关于mybatis数据查询一直报null的解决办法,首先要确保自己的xml文件写对! <!-- 悟--><select id="findByLoginId& ...

  6. 查询SQL的null与''

    测试数据库  SQL2005 简单的问题  今天正好有朋友问了下 就简单的写下~~ 数据表 ApplyInfo   age 为 varchar(64) id  age 1   null 2 3   1 ...

  7. oracle判断不包含,oracle查询不含括号及不含指定字符的方法

    oracle查询不含括号不含指定字符的记录方法如下: with tmp_t as( select 1 as id,'测试4321_CS' as name from dual union all sel ...

  8. oracle括号不区分中英,oracle查询不含括号及不含指定字符的方法

    oracle查询不含括号不含指定字符的记录方法如下: sql;"> with tmp_t as( select 1 as id,'测试4321_CS' as name from dua ...

  9. iBatis 动态SQL别名查询结果为Null问题

    iBatis 动态SQL别名查询结果为Null问题 在项目中使用了iBatis,使用xml方便的维护SQL,清晰明了,偶然发现动态拼接的SQL语句在数据中执行很好的返回结果,而到了程序中总是有字段返回 ...

最新文章

  1. go io.reader 多次读取_Go 语言进阶:freecache 源码学习(1)
  2. having 与where 的异同点
  3. 机器学习——逻辑回归算法
  4. Java继承知识之基本控制语句(if、switch与穿透现象)
  5. 计算机应用0006作业2,〔计算机应用基本0006〕14秋在线作业2.doc
  6. python3 读写json文件,python3没有读取JSON文件righ
  7. Python 学习资源汇总
  8. 英文键盘盲打最快速练习口诀和方法
  9. 2021中青杯数学建模A题 (论文+代码) 超详细
  10. 山东大学——国际结算方式
  11. 世纪佳缘php查学历吗,爬了世纪佳缘后发现了一个秘密,世纪佳缘找对象靠谱吗?...
  12. 2021年11月 | openGauss走进高校活动系列回顾
  13. freebsd12 安装gnome3图形界面
  14. 图片文件捆绑教学(仅限制图片与rar)
  15. MySQL中xtrabackup备份恢复全攻略(r12笔记第11天)
  16. LitJson输出格式化Json字符串
  17. JavaScript 当前时间显示(js)
  18. STK之Commu模块之三仿真卫星通信链路参数计算
  19. 密码必须符合复杂性要求
  20. SpringBoot实战(四):SpringBoot整合Redis

热门文章

  1. EMNLP 2020最佳论文荣誉提名:视觉信号辅助的自然语言文法学习
  2. Android 进程常驻(2)----细数利用android系统机制的保活手段
  3. 牙种植体和假体的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  4. Linux内核定标准定时器
  5. CSS块级、行级、行级块标签、display、div、span
  6. 银行核心项目工作总结
  7. html5 自动化测试工具,五大最佳自动化测试工具
  8. 惠普HP Color LaserJet Pro MFP M177fw 驱动
  9. 【注意力机制】Self-attention注意力机制理论知识
  10. 判断输入的字符串是否为“回文”|回文判断【C语言】