在oraclesql开发人员中编写查询以检索设备数量、90K+记录表的最有效方法是什么



例如:

我需要收集设备的数量";device_id";从表";history_ log";其具有15个或更多的"9000";event_ code";记录;15或更多"9001";event_ code";记录;3或更多"9002";event_ code";记录;和5个或更多的"9003";event_ code";

我无法将WHERE和HAVING子句组合在一起,并且不断遇到语法错误。提前谢谢。

我需要收集设备的数量"device_id";从表";history_ log";有:

  • 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
)

最新更新