sql - 如何识别不符合特定标准的组?
问题描述
我正在尝试使用 SQL 生成不包含特定日期的记录列表。我有一个数据库,就这个问题而言,它看起来像这样:
Block House Room Date_Room_Was_Vacuumed
471 96 1 23-MAY-17 01.48.02.000000000 PM
471 96 1 28-SEP-18 04.59.52.000000000 PM
471 95 1 01-JUL-19 08.40.01.274944000 AM
471 95 1 17-AUG-18 04.59.18.000000000 PM
我的工作本质上是查找所有在 2019 年期间没有被吸尘的房间。所以在上表中,我需要编写一个返回 Block 471, House 96, Room 1 的查询——因为两个日期条目都不在2019 年——但不是 471 号楼 95 号房 1 号房间,因为 1 号房间有 2019 年的日期条目。
我的第一个想法是使用 where 子句来消除 2019 年的日期,但这并不能告诉我哪个房间没有任何 2019 年的日期,而只会从视图中消除一条记录。
有人知道我会怎么做吗?
解决方案
不存在还是group by
?
select block, house, room
from t
group by block, house, room
having sum(case when extract(year from date_room_was_vacuumed) = 2019 then 1 else 0 end) = 0;
推荐阅读
- python - 查找图节点之间所有可能的连接组合
- python - (Flask-)SQLAlchemy 主键问题可能是由于隐式事务
- android - 关于替换在 Activity 中不工作的 Fragment
- r - Pandas 相当于 dplyr Everything()
- python - 无法使用 Beautifulsoup 读取网页的所有 html
- html - 菜单和内容之间不需要的空间
- php - PHP数组中不区分大小写的搜索
- google-translate - 针对地名的定制翻译模型,用于日语和其他语言之间的翻译
- r - 在 R 中,如何通过 ggplot2 绘制不同比例但长度相等的散点图
- python - 如何正确使用 matplotlib 在同一张图片中获取两个图形