sql - 在oracle sql developer中编写查询以检索设备数量,90K+记录表的最有效方法是什么
问题描述
例如:
我需要从表“history_log”中收集具有 15 个或更多“9000”“event_code”记录的设备“device_id”的数量;15 条或更多“9001”“event_code”记录;3 个或更多 '9002' "event_code" 记录;6 月份(从 6 月 1 日到 6 月 30 日)分别有 5 个或更多 '9003' "event_code" 记录
我无法结合 WHERE 和 HAVING 子句并不断遇到语法错误。提前致谢。
解决方案
我需要从表“history_log”中收集设备“device_id”的数量:
- 15 条或更多 '9000' "event_code" 记录;
- 15 条或更多“9001”“event_code”记录;
- 3 个或更多 '9002' "event_code" 记录;和
- 分别有 5 个或更多 '9003' "event_code" 记录,
6 月份(6 月 1 日至 6 月 30 日)
您希望在日期范围内并在子句中GROUP BY device_id
使用条件聚合来计算个人,以确保满足您的必要金额。找到匹配的值后,您就可以全部找到它们:HAVING
event_code
device_id
COUNT
SELECT COUNT(device_id)
FROM (
SELECT device_id
FROM history_log
WHERE datetime >= DATE '2021-06-01'
AND datetime < DATE '2021-07-01'
GROUP BY device_id
HAVING COUNT(CASE event_code WHEN 9000 THEN 1 END) >= 15
AND COUNT(CASE event_code WHEN 9001 THEN 1 END) >= 15
AND COUNT(CASE event_code WHEN 9002 THEN 1 END) >= 3
AND COUNT(CASE event_code WHEN 9003 THEN 1 END) >= 5
)
推荐阅读
- r - GTIN-13算法的高效实现
- android - 片段中按钮上的自定义字体和图标
- javascript - 如何在 d3.js v3 中向现有 g 元素添加更多元素
- angular - NullInjectorError:没有 NgZone 的提供者!(Angular 6 库)
- r - 我可以将 pdf 标签添加到 R markdown 文档吗?
- video - Kivy 视频播放器不适用于 Raspberry 3B+
- tensorflow - 自定义损失函数 Keras 结合了用于序数分类的交叉熵损失和 mae 损失
- javascript - 动画比例反应
- php - 如何在 Wordpress 中创建社交证明插件
- javascript - 在未附加到 DOM 的函数中创建的元素