例如:
我需要收集设备的数量";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
)