Postgresql grubu tarafından

Postgresql Grubu Tarafindan



Postgresql group by yan tümcesi, tablodaki aynı verilere sahip satırları birleştirmek/birleştirmek için kullanılan bir özelliktir. Bu madde esas olarak yinelenen verileri kaldırmak ve eşzamanlılığı korumak için kullanılır. Toplamı veya AVG vb. gibi başka bir toplamı hesaplamak istediğimizde, PostgreSQL'de kullanılan birçok yan tümce olduğundan, bu group by tümcesi her zaman kullanılır. Ancak her madde arasında bir hiyerarşi vardır.

FROM > NEREDE > “GROUP BY” > SAHİP OLMA > SEÇ > DISTINCT > SIRALAMA > SINIR

PostgreSQL'in çalışması 'where' ve 'Sahip olmak' yan tümcesinde yatmaktadır.







Sözdizimi



sütun SEÇ

FROM

NEREDE [koşullar ]

GRUP BY birinci sütun, ikinci sütun..

ORDER BY birinci sütun, ikinci sütun.. ;

örnek 1



Fonksiyona göre grup kavramını anlamak için burada bir örnek kullanıyoruz. Yolcu tablosunda bazı kişilerin soyadlarının aynı olduğunu görebilirsiniz. Birbirine benzeyen her isim bir grup oluşturur ve ödemeleri her aynı isme toplu olarak eklenir. Bu, aşağıdaki örnekte ayrıntılı olarak açıklanmıştır.





>> yolcu GROUP BY lname'den lname, SUM (ödeme) seçin;

Yolcunun soyadı, 'ödeme' sütununu alan yerleşik bir 'SUM' işlevi kullanılarak seçilir. Ve aynı ada sahip kişiler için ödemeyi ekleyin. Örneğin, “Cevad” ve “saad” maaşı eklenir. “Melik” ve “Şems” için ayrı ayrı zikredilmiştir.



Benzer şekilde, bir 'hastane' tablosu düşünün. Şehri yaşa göre gruplandırmak istiyoruz. Bu örnekte, bir şehir bir sütunda birden fazla yer almaktadır. Her şehir aynı şehir adıyla gruplandırılmıştır. Şehrin her grubunun yaşları toplanır ve tek bir satır oluşturulur.

Hastane:

>> şehir seçin, hastaneden TOPLAM (yaş) şehre göre GRUP;

Örnek 2

Alternatif olarak yolcu tablosundan id ile soyadını seçersek sonuç farklı bir tablo olacaktır. Çünkü her iki sütunu birlikte grupladığımızda her bir yolcunun adını gösterecektir çünkü ortak bir soyadı olsa bile her yolcunun id'si farklıdır. Tutar ayrı bir sütunda hesaplanmıştır ancak burada isim gruplaması yapılmadığı için her yolcunun ödemesi isminin önünde belirtilmektedir.

Bu, birden çok sütun içeren group by tümcesine bir örnektir. Çünkü gruplama için birden çok sütun seçildiğinde, tek bir tablo tarafından gruba göre sonuç değeri değişir.

>> yolcu GROUP BY id, lname'den id, lname, SUM (ödeme) seçin;

Çıktıdan bir şey fark edeceksiniz ki, ilk olarak, yaygın olmayan tüm bu adlar görüntüleniyor ve ardından tabloda aynı olanlardan bahsediliyor.

Örnek 3

Bu örnekte bir birleştirme koşulu ve bir group by yan tümcesi vardır. 'join' kullanıldığına göre, burada iki tablo kullandık demektir. Biri “ürün”, diğeri “siparişler”.

Öğeler:

Emirler:

“items” tablosunun iki sütununun değerlerini “” ile birleştirmek ve sütunu topluca “description” olarak adlandırmak için bir birleştirme yöntemi (iki dizeyi birleştirmek için kullanılır) kullandık. isteğe bağlıdır; ayrı ayrı alabilirsiniz. Bu sorguda, 'USING' anahtar kelimesi, diğer tablodaki belirli sütunu tanımlar. Kalemler tablosundaki adres, 'siparişler' tablosunun adres sütunu ile eşleştirilir. Bu, iki tablo arasında birleştirme yapılarak yapılır. Önceki örneklerde olduğu gibi, her iki sütun da GROUP BY deyimi tarafından seçilecektir.

>> isim seçin || ',' || Açıklama olarak kategori, öğelerden adres iç birleştirme Siparişler KULLANIM (adres) GROUP BY adres, Açıklama;

5 satırın sipariş adresleri ile eşleşen ürün adreslerine sahip olarak seçileceğini gözlemleyebilirsiniz. Ardından Açıklama sütunu, adres sütununa karşılık gelecek şekilde oluşturulacaktır.

Benzer şekilde, iki tabloda yaş faktörü ile birleştirmenin başka bir örneği daha vardır. Biri “yolcu”, diğeri “işçi”. Birleştirme ad ve soyadı arasındadır. Her iki isim de iki isim arasındaki boşlukla ayrılır. Burada işçi masasından bir parça aldık.

Çalışan:

Sorgu, çalışanın fname'sinin yolcu ile eşleştiği nokta, yolcunun yaşı, yaş sütununda görüntülenecek şekilde çalışacaktır.

>> ad seçin || ' || yolcu.lad tam_ad olarak, yolcu INNER'den yolcu.age birleştirme çalışanı KULLANMA (fad) GRUP BY tam_ad, yolcu.age ORDER BY yolcu.age;

Bir sıra oluşturulur. Full_name, iki sütunun boşlukla birleştirilmesiyle oluşturulur ve yolcunun fname'si ile işçinin fname'sinin eşleştiği adres seçilir.

Örnek 4

Bu örnek, 'öğeler' tablosunun kimliklerini saymak için bir count () işlevinin kullanılmasıyla ilgilidir. Bu yine tablonun kimliğine göre gruplandırılır.

>> id seçin, öğelerden COUNT (id) GROUP BY id;

id sütunundaki satırlar gruplara ayrılmıştır. Her grup, sütunda kaç kez göründüğü sütunda sayılır. Elde edilen tabloda “count” adında yeni bir sütun oluşturulur ve burada her grubun önüne sayımın değerleri yazılır.

pgAdmin'iniz

Şimdi PostgreSQL'in kontrol paneli tarafında bazı örnekler uyguladık. Bu örnekler bazı açılardan farklıdır, çünkü öğelerden herhangi biri diğerlerinden farklı olduğunda orijinal sütundan bir ara toplam satırı oluştururlar, bu nedenle değer NULL olarak döndürülür.

İlk örneği ele alalım; burada, iki sütunu birleştiren 'ALL' adlı bir sütun oluşturduk. Bir adres ve bir kategori. 'ALL' sütunu, her iki sütundaki değerleri toplu olarak sayar. Adres sütunu “add” olarak, kategori sütunu ayrı ayrı “cat” olarak gruplandırılmıştır. Kullanılan her iki tablonun sütun adları birbiri ile eşleştirilebilir. Böylece, ilgili tablonun her sütununa belirli bir nesne tarafından erişilir.

Komuta uygulanan koşul, id ve sipariş numarasına bağlıdır. Hem bu kimlik hem de sipariş numaralarının aynı olduğu durumlarda, veriler alınır. Aynı şekilde isim için de ek bir koşul eklenir.

>> o.adresi, kategorisi, sayısını (*) “TÜMÜ” OLARAK, GRUPLAMA(o.adresi) “add” OLARAK, GRUPLAMA (kategori) OLARAK “kedi” OLARAK SEÇİN I.order_no = o olmak üzere o. order_id AND i.address= 'Lahore' KÜME GÖRE GRUP (o.adres, kategori) ORDER BY 1, 2;

Lahor şehri için bir kategori seçilmiştir. 4 olasılık var. Bazen oyuncak var ama adres yok. Ve tam tersi. Ancak hem kategorinin hem de adresin mevcut olduğu bir zaman vardır.

Şimdi bir tablonun adının koşulunu değiştirirsek ve tabloyu diğeriyle değiştirirsek. 'Items.address', 'order.address' ile değiştirilir, o zaman sonuç farklıdır.

Çözüm

'Postgresql group by' yan tümcesi, herhangi bir toplama işlecini toplu verilere uygulamak için kullanılır. Bu makale, sayma işlevi, birleştirmeler ve birden çok sütunun seçimi ve gruplandırılmasıyla grup yan tümcesini kullanır. Bu eğitimin okuyucular için en iyi anlama aracı olacağına eminim.