Klausul GROUP
Klausa GROUP menyebabkan WMI menghasilkan satu pemberitahuan untuk mewakili sekelompok peristiwa. Pemberitahuan perwakilan adalah instans dari kelas sistem __AggregateEvent . Kelas sistem __AggregateEvent berisi dua properti: Representatif dan NumberOfEvents. Properti Representatif adalah objek tersemat yang berisi salah satu instans yang diterima selama interval pengelompokan yang ditentukan dalam klausa WITHIN. Misalnya, jika peristiwa agregat dihasilkan untuk memberi tahu peristiwa modifikasi instans, Representatif berisi satu instans kelas __InstanceModificationEvent . Properti NumberOfEvents berisi jumlah peristiwa yang diterima selama interval pengelompokan. Interval pengelompokan menentukan periode waktu, setelah menerima peristiwa awal, di mana WMI harus mengumpulkan peristiwa serupa.
Klausa GROUP harus berisi klausul WITHIN untuk menentukan interval pengelompokan dan dapat berisi kata kunci BY atau HAVING, atau keduanya. Klausa GROUP ditempatkan setelah klausul WHERE, seperti yang ditunjukkan berikut:
SELECT * FROM EventClass [WHERE property = value]
GROUP WITHIN interval [BY property_list]
[HAVING NumberOfEvents operator integer]
Nilai EventClass adalah kelas peristiwa di mana peristiwa tersebut adalah anggota, dan nilai adalah nilai untuk properti tempat pemberitahuan diperlukan. Interval adalah bilangan bulat yang tidak ditandatangani yang mewakili interval pengelompokan setelah menerima peristiwa pertama. Bilangan bulat yang tidak ditandatangani adalah sejumlah detik. Daftar properti adalah daftar yang dibatasi koma dari satu atau beberapa properti yang disertakan dalam kelas peristiwa; operator adalah operator relasional; dan bilangan bulat adalah bilangan bulat 32-bit yang tidak ditandatangani yang menunjukkan sejumlah peristiwa.
Saat menggunakan klausa GROUP, klausa WHERE, BY, dan HAVING bersifat opsional.
Penggunaan dasar klausa GROUP mungkin meminta pengelompokan peristiwa dalam interval waktu yang dimulai saat peristiwa pertama diterima. Misalnya, kueri berikut mengelompokkan semua peristiwa email yang dikirim dalam waktu 5 menit. Alih-alih membuat halaman pengguna setiap kali email baru diterima, konsumen permanen mungkin menggunakan kueri ini untuk memberi tahu pengguna hanya jika email baru telah diterima dalam 5 menit terakhir.
SELECT * FROM EmailEvent GROUP WITHIN 300
Jika diperlukan informasi yang lebih rinci, peristiwa dapat dikelompokkan menurut satu atau beberapa properti kelas peristiwa. Kueri berikut meminta agar peristiwa email digabungkan dengan peristiwa lain yang memiliki nilai yang sama di properti Pengirim :
SELECT * FROM EmailEvent GROUP WITHIN 300 BY Sender
Tingkat detail yang masih lebih besar dapat dicapai dengan menambahkan klausa WHERE. Misalnya, kueri berikut memberi tahu pengguna email baru dari pengirim tertentu yang telah tiba dalam 10 menit terakhir, dikombinasikan dengan peristiwa lain yang memiliki nilai yang sama dalam properti Kepentingan :
SELECT * FROM EventClass WHERE Sender = "MyBoss"
GROUP WITHIN 300 BY Importance