C# istatistiksel Sorgulamalar || Kaynak Kodlar || Örnek Proje
Selamun aleyküm arkadaşlar c# konusunda gün geçtikçe yeni bilgiler yeni otomasyonlar paylaşmaya devam ediyoruz.Bugünkü konumuz C# istatistiksel Sorgulamalar bu yaptığınız herhangi bir otomasyonunun cari modülünü kodlarken mutlaka ihtiyaç duyacağınız kodları içerir.Gelin beraber kodlarımızı inceleyelim.
İSTATİSTİKSEL SORGULAMALAR
HAVING Kullanımı
HAVING yapısı temelde WHERE ile aynı görevi yapmaktadır . GROUP BY ile kullanılır. Where ifadesi ile belirtilen kriter Group By uygulanmadan önce geçerli olurken, Having ifadesi ile belirtilen kriter ise group by uygulandıktan sonra ortaya çıkan verileri filtrelemek için kullanılır.
Ayrıca Where ifadesinden sonra sum, avg gibi fonksiyonlar kullanılamazken, Having ile kullanılabilir.Gelin kullanım yapısını inceliyeyim.
HAVING Kullanım Örneği
Örnek operatörler: ile belirtilen yere =, <, >, % gibi operatörler kullanılır.
Örnek Proje Üzerinden Gidelim Önce Tablomuzu Oluşturuyoruz.
Örnek Projeye Veri Girişi Yapıyoruz
id | Personel_Adi | Sehir | Maas |
---|---|---|---|
1 | Ramazan Şerif | Samsun | 150 |
2 | Muhammed Adıgüzel | İstanbul | 4500 |
3 | Bariş Atananboğa | Ordu | 7000 |
Projemizin Kodluyoruz.
1 | using System.Data.OleDb;//access veritabanı bağlantımız için ekledik |
1 2 3 4 | OleDbConnection Baglan = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=veritabani.accdb"); //bağlantı kodunu oluşturduk OleDbDataAdapter adaptor; //bir adet adaptor oluşturduk gridwiew doldurmak için |
1 2 3 4 5 6 7 8 9 10 11 | private void button1_Click(object sender, EventArgs e) { Baglan.Open(); // bağlantıyı açtık adaptor = new OleDbDataAdapter("Select Sehir, Sum (Maas) as Toplam_Maas From Personel Where Maas>2000 Group By Sehir",Baglan); //örnek kodumuzu yapiştirdık peki bu kodda ne diyor sehirdeki maaş toplamlarını personel tablosundaki çek ama neye göre maaşı 2000 TL Üzeri olana göre DataTable tablo = new DataTable();//datatable oluşturduk adaptor.Fill(tablo);//oluşturdumuz adapteri tabloya aktardık dataGridView1.DataSource = tablo;//oluşan tabloyuda gridwiewe aktardık Baglan.Close();// bağlantıyı kapattık } |
Projemizin Çıktısı
Bu örnekte WHERE kullanılarak maaşı 2000 TL den fazla olan personeller seçilmiş ve bunlar
gruplanarak illere maaşları toplamları bulunmuştur.
Burada görüleceği üzere WHERE ifadesi ile önce ki kriteri belirttik ve tablomuzdaki bazı kayıtlar
devre dışı bıraktık. Sonrada kalan kayıtları grupladık.
2. Bir örneğimizde ise Farklı bir sorgu yapalım.Öncelikle bunun için veritabanına aşşağıdaki Veriyide giriş yaptım.
id | Personel_Adi | Sehir | Maas |
---|---|---|---|
4 | Akbuz | Samsun | 250 |
Forma 1 Buton Daha Ekleyip Aşşağıdaki Kodları Ekliyorum.
1 2 3 4 5 6 7 8 9 10 11 | private void button2_Click(object sender, EventArgs e) { Baglan.Open(); // bağlantıyı açtık adaptor = new OleDbDataAdapter("Select Sehir,Sum (Maas) as Toplam_Maas From Personel where maas<2000 Group By Sehir Having Sehir Like 'S%'", Baglan); //örnek kodumuzu yapiştirdık peki bu kodda ne diyor sehirdeki maaş toplamlarını personel tablosundaki çek ama neye göre maaşı 2000 TL Altı olan VEE //İsminin içerisinde S harfi başlayan şehir DataTable tablo = new DataTable();//datatable oluşturduk adaptor.Fill(tablo);//oluşturdumuz adapteri tabloya aktardık dataGridView1.DataSource = tablo;//oluşan tabloyuda gridwiewe aktardık Baglan.Close();// bağlantıyı kapattık } |
Projemizin Çıktısı
Samsundaki 2 Kişinin Maaşını Topladı -Toplam Maaş Sutünü olarak gösterdi Peki Sivaslı birini daha Eklesek Ne olurdu ?
Sivas Diye bi column daha açar oraya girdiğimiz maaşları toplardı.
HAVING Kullanma Kuralları
• Select komutunda GROUP BY yoksa HAVING geçersiz olur.
• HAVING sözcüğünü izleyen ifade içinde SUM, MIN, MAX, AVG, COUNT fonksiyonlarındanen az biri mutlaka olmalıdır.
• HAVING sözcüğü sadece ve sadece gruplanmış verilerin işlemleri iç in geçerlidir.
• WHERE ile birlikte bir Select komutu içinde kullanılabilir .
WHERE ve HAVING arasındaki fark:
WHERE bir tablonun tek satırları üzerinde işlem yapan koşullar içinde geçerlidir. HAVING gruplanmış verilerin işlemleri için geçerlidir.
Bir Yorum