Aracılığıyla paylaş


HAVING Yan Tümcesi

HAVING yan tümcesi, WITHIN yan tümcesinde belirtilen gruplandırma aralığı sırasında alınan olayları filtrelemek için kullanılır. Örneğin, select deyimi, son 30 saniyelik INTERVAL içinde en az 5 olay olmadığı sürece hiçbir şey döndürmemesi için oluşturulabilir.

WITHIN yan tümcesi, GROUP yan tümcesinin hemen ardından SELECT deyimi. HAVING yan tümcesi, GROUP yan tümcesi tarafından oluşturulan grubun üye olduğu __AggregateEvent sistem sınıfının NumberOfEvents özelliği üzerinde çalışır. HAVING yan tümcesi tüm standart ilişkisel işleçleri kullanabilir.

Söz dizimi aşağıdaki gibidir:

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

EventClass değeri, olayın üyesi olduğu olay sınıfıdır ve değeri, bildirimin gerekli olduğu özelliğin değeridir. Aralık, ilk olayı aldıktan sonra gruplandırma aralığını (saniye cinsinden) temsil eden işaretsiz bir tamsayıdır. Özellik listesi, olay sınıfına dahil edilen bir veya daha fazla özelliğin virgülle ayrılmış listesidir. işleci herhangi bir ilişkisel işleçtir. Sabit değer, filtreleme için kullanılan olay sayısını gösteren işaretsiz herhangi bir 32 bit tamsayıdır.

HAVING yan tümcesi kullanılırken WHERE ve BY yan tümceleri isteğe bağlıdır.

Aşağıdaki olay sorgusu, EmailEvent sınıfının bildirimlerinin WMI'nin aldığı ilk olaydan 300 saniye sonra tek bir olayda gruplanması isteğinde bulunur. Ayrıca sorgu, __AggregateEvent örneğinin teslim edilmesi için WMI'nin bu 300 saniyede beşten fazla e-posta olayı alması gerekir.

SELECT * FROM EmailEvent GROUP WITHIN 300 HAVING NumberOfEvents > 5

Aşağıdaki örnek, targetInstance tarafından 600 saniye (yani 10 dakika) içinde alınan tüm olayları gruplar. SourceNameözelliğini. Bu örnekte, toplama olayları yalnızca aynı kaynaktan alınan Win32_NTLogEvent olay sayısı 25'i aştığında teslim edilir. ISA işlecinin, __InstanceCreationEvent sistem sınıfının TargetInstance özelliğinin Win32_NTLogEvent sınıfının bir örneğini temsil etmesine neden olduğunu unutmayın.

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