Birden çok sütunda gruplama özelliğini kullanma


1035

Amacını anlıyorum GROUP BY x

Ama nasıl GROUP BY x, yçalışır ve bu ne anlama geliyor?


2
Bu soru ortaya koyduğu için tarifini bulamazsınız. GROUP BY deyimi bir veya daha fazla alan alabilir. GRUP TARAFINDAN müşteri; GROUP BY soyadı, adı; YILLARA GÖRE GRUP, mağaza, sku vb.
Bill

Yanıtlar:


2027

Group By X" X" için aynı değere sahip olanları bir gruba koymak anlamına gelir .

Group By X, Y" X" ve "Y" için aynı değerlere sahip olanları bir gruba koymak anlamına gelir .

Bir örnek kullanarak göstermek için, bir üniversitede hangi derse kimlerin katıldığına ilişkin aşağıdaki tabloya sahip olduğumuzu varsayalım:

Table: Subject_Selection

Subject   Semester   Attendee
---------------------------------
ITB001    1          John
ITB001    1          Bob
ITB001    1          Mickey
ITB001    2          Jenny
ITB001    2          James
MKB114    1          John
MKB114    1          Erica

group byYalnızca konu sütununda a kullandığınızda ; söyle:

select Subject, Count(*)
from Subject_Selection
group by Subject

Gibi bir şey alacaksınız:

Subject    Count
------------------------------
ITB001     5
MKB114     2

... çünkü ITB001 için 5, MKB114 için 2 giriş var

group byİki sütuna olsaydık :

select Subject, Semester, Count(*)
from Subject_Selection
group by Subject, Semester

bunu alacağız:

Subject    Semester   Count
------------------------------
ITB001     1          3
ITB001     2          2
MKB114     1          2

Bunun nedeni, iki sütuna göre gruplandırdığımızda, "Aynı Konu ve Yarıyıl'a sahip olanların tümü aynı grupta olacak şekilde gruplandırın ve ardından tüm toplama işlevlerini (Sayım, Toplam, Ortalama vb.) Hesaplamaktır . ) bu gruplar" her biri için . Bu örnekte bu, onları saydığımızda, 1. yarıyılda ITB001 yapan iki kişi ve 2. yarıyılda yapan iki kişi olduğu gerçeği ile gösterilmiştir. MKB114 yapan her iki kişi de 1. yarıyıldadır. dönem 2 satırı ("MKB114, Dönem 2" grubuna hiçbir veri sığmıyor)

Umarım bu mantıklıdır.


11
@Smashery: Yani bu da demek oluyor GROUP BY A,Baynıdır GROUP BY B,A?
tumchaaditya

23
Evet öyle. Birbirleri kadar verimli olup olmadıklarını kesin olarak söyleyemem, ama aynı sonucu verecekler, evet.
Smashery

2
Burada arasında bir fark olduğunu eklenmelidir Mayıs GROUP BY a, bve GROUP BY a AND bikincisi sadece listeleri gruplandırılmış tam olarak aynı içeriğe sahip öğeler ve hayır "undergroups" beri. Bu durumda çıktı birinciyle aynı olur.
Dwza

5
Sütunlara göre gruplandırdığınız sıralamanın önemli olmadığını eklemek istiyorum. Yukarıdaki örnek grupta sömestr, Konu aynı sonucu
verirdi

2
iyi, a, b'ye göre gruplayın ve b'ye göre gruplayın, aynı sonucu döndürmeyin - satırlar farklı bir sırayla görüntülenir
fanny

33

GROUP BYMaddesi, bir ya da daha fazla sütuna göre grubuna toplama işlevleri ile bağlantılı olarak sonuç kümesi kullanılmaktadır. Örneğin:

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

Bu siparişi hatırla:

1) SELECT (bir veritabanından veri seçmek için kullanılır)

2) FROM (yan tümce tabloları listelemek için kullanılır)

3) NEREDE (madde filtreleri filtrelemek için kullanılır)

4) GROUP BY (yan tümce, bir SELECT deyiminde birden çok kayıtta veri toplamak ve sonuçları bir veya daha fazla sütuna göre gruplamak için kullanılabilir)

5) HAVING (yan tümce, döndürülen satır gruplarını yalnızca koşulu TRUE olanlarla sınırlamak için GROUP BY yan tümcesi ile birlikte kullanılır)

6) ORDER BY (anahtar kelime, sonuç kümesini sıralamak için kullanılır)

Toplama işlevlerini kullanıyorsanız bunların tümünü kullanabilirsiniz ve ayarlanması gereken sıra budur, aksi takdirde bir hata alabilirsiniz.

Toplama İşlevleri:

MIN, belirli bir sütundaki en küçük değeri döndürür

TOPLA, belirli bir sütundaki sayısal değerlerin toplamını döndürür

AVG belirli bir sütunun ortalama değerini döndürür

COUNT, belirli bir sütundaki toplam değer sayısını döndürür

COUNT (*), bir tablodaki satır sayısını döndürür


1
ancak 2 sütunu nereye koyacağız, 2 / daha fazla sütuna dayanarak nasıl bir araya getirileceği sorusu
Chaitanya Bapat

Merhaba Chaitanya, sorduğunuz şeyin bu olup olmadığını bilmiyorum ama size birkaç örnek vereyim. Toplama işlevlerini bu şekilde kullandığınız bir ürün tablonuz varsa, aşağıda iki senaryo bulunmaktadır: AVG (instock) FROM ürünlerini seçin; Bu, ürünler tablosundaki stoktaki ortalama birimleri hesaplayacaktır. Şimdi stoktaki birimleri ürün kategorisine göre hesaplamak istiyorsanız, AVG işlevini GROUP BY deyimiyle şu şekilde kullanmanız gerekir: SELECT categoryId, AVG (instock) ürünlerden GROUP BY categoryId;
S. Mayol

Bu bile soruyu uzaktan cevaplamıyor ... Buradaki soru, verilen örnekte açıklandığı gibi, "özne" ve "dönem" in "zincirleme gruplandırmasını" aynı anda nasıl elde edeceğidir ...
MahNas92
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.