다음을 통해 공유


HAVING 절

HAVING 절은 WITHIN 절에 지정된 그룹화 간격 동안 수신되는 이벤트를 필터링하는 데 사용됩니다. 예를 들어 SELECT 문을 생성하여 지난 30초 INTERVAL 내에 5개 이상의 이벤트가 없는 한 아무 것도 반환하지 않도록 할 수 있습니다.

WITHIN 절은 GROUP 절 다음에 SELECT 문에 나옵니다. HAVING 절은 GROUP 절에서 만든 그룹이 멤버인 __AggregateEvent 시스템 클래스의 NumberOfEvents 속성에서 작동합니다. HAVING 절은 모든 표준 관계형 연산자를 사용할 수 있습니다.

구문은 다음과 같습니다.

SELECT * FROM EventClass [WHERE property = value] 
  GROUP WITHIN interval [BY property_list]
  HAVING NumberOfEvents operator constant

EventClass 값은 이벤트가 멤버인 이벤트 클래스이며 은 알림이 필요한 속성의 값입니다. 간격은 첫 번째 이벤트를 받은 후의 그룹화 간격(초)을 나타내는 부호 없는 정수입니다. 속성 목록은 이벤트 클래스에 포함된 하나 이상의 속성에 대한 쉼표로 구분된 목록입니다. 연산자는 관계형 연산자입니다. 상수 값은 필터링에 사용되는 이벤트 수를 나타내는 부호 없는 32비트 정수입니다.

HAVING 절을 사용하는 경우 WHERE 및 BY 절은 선택 사항입니다.

다음 이벤트 쿼리는 EmailEvent 클래스의 알림을 WMI가 수신하는 첫 번째 이벤트로부터 300초 후에 하나의 이벤트로 그룹화할 것을 요청합니다. 또한 쿼리는 WMI가 300초 동안 6개 이상의 이메일 이벤트를 수신하는 경우에만 __AggregateEvent 인스턴스를 전달할 것을 요청합니다.

SELECT * FROM EmailEvent GROUP WITHIN 300 HAVING NumberOfEvents > 5

다음 예제에서는 TargetInstance.SourceName 속성을 600초(즉 10분)에 수신된 모든 이벤트를 그룹화합니다. 이 예제에서 집계 이벤트는 동일한 원본에서 수신된 Win32_NTLogEvent 이벤트 수가 25를 초과하는 경우에만 전달됩니다. ISA 연산자는 __InstanceCreationEvent 시스템 클래스의 TargetInstance 속성이 Win32_NTLogEvent 클래스의 인스턴스를 나타내도록 한다는 것을 기억하세요.

SELECT * FROM __InstanceCreationEvent 
  WHERE TargetInstance ISA "Win32_NTLogEvent" 
  GROUP WITHIN 600 BY TargetInstance.SourceName
  HAVING NumberOfEvents > 25