having查询不含null的集合
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的集合相关推荐
- mybatis mysql查询树形结构_MyBatis collection 集合嵌套查询树形节点
原标题:MyBatis collection 集合嵌套查询树形节点 MyBatis collection 集合 MyBatis 是数据持久层框架,支持定制化 SQL.存储过程以及高级映射.尤其强大在于 ...
- mybatis 取查询值_MyBatis面试题集合,90%会遇到这些问题
点击蓝字关注我们吧! 1.#{}和${}的区别是什么? ${}是Properties文件中的变量占位符,它可以用于标签属性值和sql内部,属于静态文本替换,比如${driver}会被静态替换为com. ...
- ES(Elasticsearch)基本查询总结(含docker安装,python操作)
全栈工程师开发手册 (作者:栾鹏) 架构系列文章 官网:https://www.elastic.co/guide/index.html 搜索语法:https://www.elastic.co/guid ...
- 处理数字_7_含NULL值的列的聚合
含NULL值的列的聚合 需求描述 需求:验证行NULL的列的聚合函数的计算结果. 解决方法:通过MIN.MAX.SUM.AVG.COUNT(*)来完成. 注: 数据库数据集SQL脚本详见如下链接地址 ...
- ssm框架数据查询一直为null
对于ssm框架中关于mybatis数据查询一直报null的解决办法,首先要确保自己的xml文件写对! <!-- 悟--><select id="findByLoginId& ...
- 查询SQL的null与''
测试数据库 SQL2005 简单的问题 今天正好有朋友问了下 就简单的写下~~ 数据表 ApplyInfo age 为 varchar(64) id age 1 null 2 3 1 ...
- oracle判断不包含,oracle查询不含括号及不含指定字符的方法
oracle查询不含括号不含指定字符的记录方法如下: with tmp_t as( select 1 as id,'测试4321_CS' as name from dual union all sel ...
- oracle括号不区分中英,oracle查询不含括号及不含指定字符的方法
oracle查询不含括号不含指定字符的记录方法如下: sql;"> with tmp_t as( select 1 as id,'测试4321_CS' as name from dua ...
- iBatis 动态SQL别名查询结果为Null问题
iBatis 动态SQL别名查询结果为Null问题 在项目中使用了iBatis,使用xml方便的维护SQL,清晰明了,偶然发现动态拼接的SQL语句在数据中执行很好的返回结果,而到了程序中总是有字段返回 ...
最新文章
- go io.reader 多次读取_Go 语言进阶:freecache 源码学习(1)
- having 与where 的异同点
- 机器学习——逻辑回归算法
- Java继承知识之基本控制语句(if、switch与穿透现象)
- 计算机应用0006作业2,〔计算机应用基本0006〕14秋在线作业2.doc
- python3 读写json文件,python3没有读取JSON文件righ
- Python 学习资源汇总
- 英文键盘盲打最快速练习口诀和方法
- 2021中青杯数学建模A题 (论文+代码) 超详细
- 山东大学——国际结算方式
- 世纪佳缘php查学历吗,爬了世纪佳缘后发现了一个秘密,世纪佳缘找对象靠谱吗?...
- 2021年11月 | openGauss走进高校活动系列回顾
- freebsd12 安装gnome3图形界面
- 图片文件捆绑教学(仅限制图片与rar)
- MySQL中xtrabackup备份恢复全攻略(r12笔记第11天)
- LitJson输出格式化Json字符串
- JavaScript 当前时间显示(js)
- STK之Commu模块之三仿真卫星通信链路参数计算
- 密码必须符合复杂性要求
- SpringBoot实战(四):SpringBoot整合Redis
热门文章
- EMNLP 2020最佳论文荣誉提名:视觉信号辅助的自然语言文法学习
- Android 进程常驻(2)----细数利用android系统机制的保活手段
- 牙种植体和假体的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- Linux内核定标准定时器
- CSS块级、行级、行级块标签、display、div、span
- 银行核心项目工作总结
- html5 自动化测试工具,五大最佳自动化测试工具
- 惠普HP Color LaserJet Pro MFP M177fw 驱动
- 【注意力机制】Self-attention注意力机制理论知识
- 判断输入的字符串是否为“回文”|回文判断【C语言】