sql - SQL 帮助 - 异常报告
问题描述
我有一个公司表(CompanyID、CompanyName)、日期表(Datekey int、date、isTradingHoliday 0/1)、事实表(id、datekey、companyID、StockClosePrice)
我需要一份异常报告。对所有公司的预期,在所有交易日,都会有一个 StockClosePrice。我需要找到我没有数据的交易日的哪个日期和哪些公司。
所以基本上,我需要帮助来编写一个查询来查找 2019 年的哪些日子和哪些公司我在事实表中没有数据。
解决方案
如果我正确地关注了你,你可以交叉加入公司和日期,然后在非交易假期过滤“缺失”的事实not exists
:
select c.*, d.*
from companies c
cross join dates d
where
d.isTradingHoliday = 0
and not exists (
select 1 from facts f where f.datekey = d.datekey and f.companyID = c.companyID
)
推荐阅读
- python - 基于具有重复项的列合并两个数据框
- logstash - Logstash 的 Grok 插件有序字段问题
- javascript - 在最后一个 li 更改上创建新的 li 元素
- c# - 使用对象初始化方法动态创建 ElasticSearch 查询
- node.js - 将域重定向到特定端口 - 托管应用程序
- android - 如何修复确实存在的 SQLite Studio Android-Plugin 的导入错误?
- java - AbstractCommonPowerMockRunner 无法解决
- delta-lake - Delta Lake 的自定义元数据/标签?
- python - 使用 praw 发布时自动向 reddit 添加评论
- javascript - React Native - 状态不会改变