SQL GROUP BY ve Örneklerle Cümlesi Var

İçindekiler:

Anonim

Maddeye göre SQL Grubu nedir?

GROUP BY yan tümcesi, aynı değerlere sahip satırları gruplamak için kullanılan bir SQL komutudur . GROUP BY yan tümcesi, SELECT deyiminde kullanılır. İsteğe bağlı olarak, veritabanından özet raporlar üretmek için toplama işlevleriyle birlikte kullanılır.

Veritabanındaki verileri özetleyerek yaptığı budur .

GROUP BY yan tümcesini içeren sorgular, gruplanmış sorgular olarak adlandırılır ve her gruplanmış öğe için yalnızca tek bir satır döndürür.

SQL GROUP BY Sözdizimi

Artık SQL GROUP BY cümlesinin ne olduğunu bildiğimize göre, sorguya göre temel bir grubun sözdizimine bakalım.

SELECT statements… GROUP BY column_name1[,column_name2,… ] [HAVING condition];

İŞTE

  • "SELECT deyimleri…" standart SQL SELECT komut sorgusudur.
  • " GROUP BY column_name1" gruplandırmayı sütun_adı1 temelinde gerçekleştiren cümledir.
  • "[, sütun_adı2,…]" isteğe bağlıdır; gruplama birden fazla sütunda yapıldığında diğer sütun adlarını temsil eder.
  • "[ŞART VAR]" isteğe bağlıdır; GROUP BY yan tümcesinden etkilenen satırları kısıtlamak için kullanılır. WHERE cümlesine benzer.

Tek Sütun Kullanarak Gruplama

SQL Group By cümlesinin etkisini anlamaya yardımcı olmak için, üyeler tablosundaki tüm cinsiyet girişlerini döndüren basit bir sorgu yürütelim.

SELECT `gender` FROM `members` ;
 
gender
Female
Female
Male
Female
Male
Male
Male
Male
Male

Cinsiyetler için benzersiz değerleri elde etmek istediğimizi varsayalım. Aşağıdaki sorguyu kullanabiliriz -

SELECT `gender` FROM `members` GROUP BY `gender`;

Yukarıdaki komut dosyasını MySQL çalışma tezgahında Myflixdb ile çalıştırmak bize aşağıdaki sonuçları verir.

 
gender
Female
Male

Yalnızca iki sonucun döndürüldüğünü unutmayın. Bunun nedeni, sadece Erkek ve Kadın cinsiyet tipimiz olmasıdır. SQL'deki GROUP BY deyimi, tüm "Erkek" üyeleri bir arada gruplandırdı ve bunun için yalnızca tek bir satır döndürdü. Aynı şeyi "Kadın" üyeler için de yaptı.

Birden çok sütun kullanarak gruplama

Film category_id ve bunların piyasaya sürüldüğü ilgili yılların bir listesini almak istediğimizi varsayalım.

Bu basit sorgunun çıktısını gözlemleyelim

SELECT `category_id`,`year_released` FROM `movies` ;
 
category_id year_released
1 2011
2 2008
NULL 2008
NULL 2010
8 2007
6 2007
6 2007
8 2005
NULL 2012
7 1920
8 NULL
8 1920

Yukarıdaki sonucun birçok kopyası var.

SQL'de group by kullanarak aynı sorguyu çalıştıralım -

SELECT `category_id`,`year_released` FROM `movies` GROUP BY `category_id`,`year_released`;

Yukarıdaki komut dosyasını MySQL çalışma tezgahında myflixdb ile çalıştırmak bize aşağıda gösterilen aşağıdaki sonuçları verir.

 
category_id year_released
NULL 2008
NULL 2010
NULL 2012
1 2011
2 2008
6 2007
7 1920
8 1920
8 2005
8 2007

GROUP BY cümlesi, yukarıdaki örneğimizde benzersiz satırları tanımlamak için hem kategori kimliği hem de serbest bırakılan yıl üzerinde çalışır .

Kategori kimliği aynıysa ancak yayınlandığı yıl farklıysa, bir satır benzersiz olarak değerlendirilir. Kategori kimliği ve serbest bırakılan yıl birden fazla satır için aynıysa, yinelenen ve yalnızca bir satır olarak kabul edilir. gösterilir.

Gruplama ve toplama işlevleri

Veritabanımızda toplam erkek ve kadın sayısını istediğimizi varsayalım. Bunu yapmak için aşağıda gösterilen aşağıdaki komut dosyasını kullanabiliriz.

SELECT `gender`,COUNT(`membership_number`) FROM `members` GROUP BY `gender`;

Yukarıdaki betiği MySQL çalışma tezgahında myflixdb ile çalıştırmak bize aşağıdaki sonuçları verir.

 
gender COUNT('membership_number')
Female 3
Male 5

Aşağıda gösterilen sonuçlar, yayınlanan her benzersiz cinsiyet değerine göre gruplandırılır ve gruplanan satırların sayısı COUNT toplama işlevi kullanılarak sayılır.

HAVING yan tümcesini kullanarak sorgu sonuçlarını kısıtlama

Her zaman belirli bir tablodaki tüm veriler üzerinde gruplama yapmak istemeyeceğiz. Sonuçlarımızı belirli bir kriterle sınırlandırmak isteyeceğimiz zamanlar olacaktır. Bu gibi durumlarda HAVING cümlesini kullanabiliriz

8 numaralı film kategorisinin tüm yayın yıllarını bilmek istediğimizi varsayalım. Sonuçlarımıza ulaşmak için aşağıdaki komut dosyasını kullanacağız.

SELECT * FROM `movies` GROUP BY `category_id`,`year_released` HAVING `category_id` = 8;

Yukarıdaki komut dosyasını MySQL çalışma tezgahında Myflixdb ile çalıştırmak bize aşağıda gösterilen aşağıdaki sonuçları verir.

 
movie_id title director year_released category_id
9 Honey mooners John Schultz 2005 8
5 Daddy's Little Girls NULL 2007 8

Yalnızca kategori kimliği 8 olan filmlerin GROUP BY maddemizden etkilendiğini unutmayın.

Özet

  • GROUP BY Clause SQL, satırları aynı değerlerle gruplamak için kullanılır.
  • GROUP BY Yan Tümcesi, SQL SELECT deyimi ile birlikte kullanılır.
  • GROUP BY yan tümcesinde kullanılan SELECT deyimi yalnızca sütun adlarını, toplama işlevlerini, sabitleri ve ifadeleri içerebilir.
  • SQL Having Clause, GROUP BY cümlesi tarafından döndürülen sonuçları kısıtlamak için kullanılır.
  • MYSQL GROUP BY Clause, birden çok kayıttan veri toplamak için kullanılır ve bir veya daha fazla sütun tarafından döndürülen kayıt kümesini döndürür.