• SELECT deyimi: gelişmiş özellikler. SQL dili. Veritabanına sorguların oluşturulması



    • Toplu işlevler bir SELECT deyimindeki alan adları gibi kullanılır, bir istisna dışında: alan adını bağımsız değişken olarak alırlar. özellikleri ile TOPLAM Ve ortalama sadece sayısal alanlar kullanılabilir. özellikleri ile SAYI, MAKS ve MİN hem sayısal hem de karakter alanları kullanılabilir. Karakter alanlarıyla birlikte kullanıldığında MAKS. Ve DAK bunları bir ASCII kod eşdeğerine çevirecek ve işleyecektir. alfabetik sıra. Bazı DBMS'ler iç içe toplamalara izin verir, ancak bu, tüm sonuçlarıyla birlikte ANSI standardından bir sapmadır.


    Örneğin, her disiplinde sınava giren öğrenci sayısını hesaplayabilirsiniz. Bunu yapmak için, "Konu" alanına göre gruplandırılmış bir sorgu yürütmeniz ve sonuç olarak disiplinin adını ve bu disiplin için gruptaki satır sayısını görüntülemeniz gerekir. * karakterini COUNT işlevinin bağımsız değişkeni olarak kullanmak, gruptaki tüm satırları saymak anlamına gelir.

    R1'İ SEÇİN. Disiplin, COUNT(*)

    R1.Disipline Göre GRUPLAMA;

    Sonuç:


    SEÇ R1.Disiplin, SAY (*)

    NEREDE R1. Değerlendirme BOŞ DEĞİLDİR

    R1.Disipline Göre GRUPLAMA;

    Sonuç:


    gruplandırmadan önce demet kümesine düşmeyecek, bu nedenle "Bilgi Kuramı" disiplini için gruptaki demet sayısı 1 daha az olacaktır.

    Sorgu şu şekilde yazılırsa benzer bir sonuç elde edilebilir:

    R1'İ SEÇİN. Disiplin, COUNT(R1.Puan)

    R1 TARAFINDAN GRUPLANDIRILMIŞTIR. Disiplin;

    İşlev COUNT (ÖZELLİK ADI) bir fonksiyondan farklı olarak bir gruptaki tanımlı değerlerin sayısını sayar SAYMAK(*), bir gruptaki satır sayısını sayar. Nitekim "Bilgi Teorisi" disiplinine sahip grupta 4 satır olacak, ancak "Değerlendirme" özniteliğinin yalnızca 3 belirli değeri olacaktır.


    Toplu İşlevlerde NULL Değerleri İşleme Kuralları

    Bir sütundaki herhangi bir değer eşitse HÜKÜMSÜZ işlevin sonucu hesaplanırken hariç tutulur.

    Bir sütundaki tüm değerler eşitse HÜKÜMSÜZ, O Maks Min Toplam Ort. = BOŞ, say = 0 (sıfır).

    Tablo boşsa, say(*) = 0 .

    Toplama işlevleri, ön gruplama işlemi olmadan da kullanılabilir; bu durumda, tüm ilişki bir grup olarak ele alınır ve bu grup için grup başına bir değer hesaplanabilir.

    Toplu İşlevleri Yorumlama Kuralları

    Toplu işlevler çıktı listesine dahil edilebilir ve ardından tüm tabloya uygulanır.

    R1'den MAX(Puan) SEÇİN oturumda maksimum notu verecek;

    R1'den TOPLA(Puan) SEÇİN oturum için tüm derecelendirmelerin toplamını verecektir;

    R1'den ORTALAMA(Puan) SEÇİN tüm oturum boyunca ortalama bir puan verecektir.


    2; Sonuç: "genişlik="640"

    Tekrar “Oturum” veri tabanına (tablo R1) atıfta bulunarak, başarıyla geçilen sınavların sayısını buluyoruz:

    SAYI SEÇ(*) kiralık _ sınavlar

    NEREDE puan 2;

    Sonuç:


    Toplama işlevleri, bağımsız tablo sütunlarını bağımsız değişken olarak alabilir. Örneğin, bir gruptaki belirli bir sütun için farklı değerlerin sayısını hesaplamak için, sütun adıyla birlikte DISTINCT anahtar sözcüğü kullanılmalıdır. Her disiplinde alınan farklı notların sayısını hesaplayalım:

    R1.Disiplin SEÇ, SAY (FARKLI R1.Puan)

    NEREDE R1. Değerlendirme BOŞ DEĞİLDİR

    R1.Disipline Göre GRUPLAMA;

    Sonuç:


    WHERE bölümündeki açık koşul hariç tutulursa aynı sonuç elde edilir, bu durumda sorgu şöyle görünür:

    R1'İ SEÇİN. Disiplin, COUNT(DISTINCT R1.Puan)

    R1 TARAFINDAN GRUPLANDIRILMIŞTIR. Disiplin;

    İşlev COUNT(FARKLI R1.Puan) sadece belirli sayar çeşitli değerler.

    Bu durumda elde etmek için İstenen sonuç, "Puan" sütununun bir ön veri türü dönüştürmesi yapmak, onu gerçek bir türe çevirmek gerekir, ardından ortalamanın hesaplanmasının sonucu bir tamsayı olmayacaktır. Bu durumda, istek şöyle görünecektir:


    2 R2'ye göre gruplandırın. Grup, R1. Disiplin; Burada, CAST() işlevi Puan sütununu geçerli bir veri türüne dönüştürür. "genişlik="640"

    Toplam olarak R2.Group, R1.Subject,Count(*), Ortalama_skor olarak AVG(cast(Puan as ondalık(3,1))) öğesini seçin

    R1,R2'den

    nerede R1. Tam ad = R2. Tam ad ve R1. değerlendirme boş değil

    ve R1. 2. sınıf

    R2'ye göre gruplandırın. Grup, R1. Disiplin;

    burada işlev DÖKÜM() Puan sütununu geçerli bir veri türüne dönüştürür.


    Toplama işlevlerini bir WHERE yan tümcesinde kullanamazsınız çünkü bu bölümdeki koşullar tek bir satır açısından değerlendirilirken toplama işlevleri satır grupları açısından değerlendirilir.

    GROUP BY yan tümcesi, belirli bir alandaki değerlerin bir alt kümesini başka bir alan açısından tanımlamanıza ve alt kümeye bir toplama işlevi uygulamanıza olanak tanır. Bu, alanları ve toplama işlevlerini tek bir SELECT yan tümcesinde birleştirmeyi mümkün kılar. Toplama işlevleri, hem SELECT satırının sonuçlarının çıktı ifadesinde hem de oluşturulan HAVING gruplarının işlenmesi için koşul ifadesinde kullanılabilir. Bu durumda, seçilen her grup için her toplama işlevi hesaplanır. Toplama fonksiyonlarının hesaplanması sırasında elde edilen değerler, karşılık gelen sonuçları görüntülemek veya bir grup seçim koşulu için kullanılabilir.

    Sınavlarda bir disiplinde birden fazla ikili alınan grupları gösteren bir sorgu oluşturalım:


    1; Sonuç: "genişlik="640"

    R2'yi SEÇİN. Grup

    R1,R2'DEN

    NEREDE R1. Tam ad = R2. Tam adı VE

    R1.Puan = 2

    GRUP BY R2.Grup, R1.Disiplin

    HAVING sayısı(*) 1;

    Sonuç:


    Belirli bir bankanın şubelerindeki hesaplar hakkında bilgi içeren F ilişkisini saklayan bir F tablosundan oluşan bir "Banka" veritabanımız var:

    Şubelerdeki hesaplardaki toplam bakiyeyi bulun. Her şube için tablodan SUM (Bakiye) seçilerek her biri için ayrı sorgulama yapmak mümkündür ancak işlem GRUP BY, hepsini tek bir komuta koymanıza izin verecektir:

    SEÇME Dal , TOPLA( kalan )

    Şube bazında GRUP;

    GRUPLANDIRMAYA GÖREŞube alanının değeriyle tanımlanan her grup için toplama işlevlerini bağımsız olarak uygular. Grup, aşağıdaki satırlardan oluşur: aynı değer dal ve işlev alanları TOPLAM her grup için ayrı ayrı uygulanır, yani toplam hesap bakiyesi her şube için ayrı ayrı hesaplanır. Uygulandığı alanın değeri GRUPLANDIRMAYA GÖRE, tanım gereği, tıpkı bir toplama işlevinin sonucu gibi, çıktı grubu başına yalnızca bir değere sahiptir.


    5000; HAVING yan tümcesindeki bağımsız değişkenler, GROUP BY'nin kullanıldığı SELECT yan tümcesindekiyle aynı kurallara uyar. Çıkış grubu başına bir değere sahip olmalıdırlar. "genişlik="640"

    Yalnızca toplam hesap bakiyeleri 5.000$'dan fazla olan şubeleri ve seçilen şubelerin toplam bakiyelerini seçtiğinizi varsayalım. Toplam bakiyesi 5.000$'ın üzerinde olan şubeleri görüntülemek için HAVING yan tümcesini kullanın. HAVING yan tümcesi, WHERE yan tümcesinin tek tek satırlar için yaptığı gibi, belirli grupları çıktıdan çıkarmak için kullanılan ölçütleri belirtir.

    Doğru komut şöyle olacaktır:

    Şube SEÇ, SUM(Bakiye)

    GRUPLANDIRMAYA GÖRE Dal

    TOPLAMA SAHİP ( kalan ) 5 000;

    Cümledeki bağımsız değişkenler SAHİP OLMAK teklifte olduğu gibi aynı kurallara tabidir SEÇME nerede kullanılır GRUPLANDIRMAYA GÖRE. Çıkış grubu başına bir değere sahip olmalıdırlar.


    Aşağıdaki komut yasaklanacak:

    Şube SEÇ, TOPLA(Bakiye)

    Şube bazında grup

    Açılış Tarihi = 27/12/2004 OLAN ;

    Alan Açılış tarihi cümle içinde kullanılamaz SAHİP OLMAK, çünkü çıkış grubu başına birden fazla değere sahip olabilir. Bu durumu önlemek için teklif SAHİP OLMAK yalnızca toplamalara ve seçilen alanlara atıfta bulunmalıdır GRUPLANDIRMAYA GÖRE. Mevcut Doğru yol yukarıdaki isteği yapın:

    Şube SEÇ, TOPLA(Bakiye)

    NEREDE OpenDate = '27/12/2004'

    Şube bazında GRUP;


    Anlam verilen istek sonraki: 27 Aralık 2004'te açılan her bir hesap şubesi için bakiyelerin toplamını bulun.

    Daha önce belirtildiği gibi, HAVING yalnızca her çıkış grubu için bir değeri olan bağımsız değişkenleri alabilir. Uygulamada, toplama işlevlerine yapılan başvurular en yaygın olanıdır, ancak GROUP BY kullanılarak seçilen alanlar da geçerlidir. Örneğin, St. Petersburg, Pskov ve Uryupinsk'teki şubelerin hesaplarındaki toplam bakiyeyi görmek istiyoruz:

    Şube SEÇ, SUM(Bakiye)

    F,Q'DAN

    NEREDE F. Şube = Q. Şube

    Şube bazında grup

    ŞUBESİ İÇİNDE ('St. Petersburg', 'Pskov', 'Uryupinsk');

    100.000; Toplam bakiye 100.000$'dan fazla ise, bunu ortaya çıkan ilişkide göreceğiz, aksi halde boş bir ilişki elde edeceğiz. "genişlik="640"

    Bu nedenle, HAVING yan tümcesinin seçim yan tümcesinde yer alan yüklemlerin aritmetik ifadelerinde, yalnızca GROUP BY yan tümcesinde gruplandırma sütunları olarak belirtilen sütunların belirtimleri doğrudan kullanılabilir. Kalan sütunlar yalnızca şu şekilde değerlendirilen COUNT, SUM, AVG, MIN ve MAX toplama işlevlerinin belirtimlerinde belirtilebilir. bu durum tüm satır grubu için bir miktar toplam değer. HAVING bölümünün yürütülmesinin sonucu, yalnızca HAVING bölümündeki seçim koşulunun hesaplanması sonucunun DOĞRU olduğu satır gruplarını içeren gruplandırılmış bir tablodur. Özellikle, GROUP BY içermeyen bir sorguda bir HAVING yan tümcesi varsa, bunun yürütülmesinin sonucu ya boş bir tablodur ya da tablo ifadesinin önceki bölümlerinin tek bir grup olarak ele alınmasının yürütülmesinin sonucudur. sütunları gruplandırmadan. Bir örnek düşünün. Diyelim ki çıktı almak istiyoruz toplam tutar tüm şubeler için bakiyeler, ancak yalnızca 100.000 ABD Dolarından fazlaysa, bu durumda, sorgumuz gruplama işlemlerini içermeyecek, ancak bir HAVING bölümü içerecek ve şöyle görünecektir:

    TOPLAM SEÇ( kalan )

    TOPLAMA SAHİP( kalan ) 100 000;

    Toplam bakiye 100.000$'dan fazla ise, bunu ortaya çıkan ilişkide göreceğiz, aksi halde boş bir ilişki elde edeceğiz.


    Veritabanında bulunan bilgileri özetlemek için SQL, toplama işlevleri sağlar. Toplama işlevi, tüm veri sütununu bağımsız değişken olarak alır ve bu sütunu bir şekilde özetleyen tek bir değer döndürür.

    Örneğin, AVG() toplama işlevi, bir sayı sütununu bağımsız değişken olarak alır ve bunların ortalamasını hesaplar.

    Bir Zelenograd sakininin kişi başına ortalama gelirini hesaplamak için aşağıdaki sorguya ihtiyacınız var:

    'ORTALAMA GELİR=', ORTALAMA(TOPLAM) SEÇİN

    SQL, elde etmenize izin veren altı toplama işlevine sahiptir. Farklı türdeözet bilgi (Şekil 1):

    – SUM(), sütunda yer alan tüm değerlerin toplamını hesaplar;

    – AVG(), sütunda yer alan değerler arasındaki ortalamayı hesaplar;

    – MIN(), sütunda yer alan tüm değerler arasından en küçüğünü bulur;

    – MAX(), sütunda yer alan tüm değerler arasında en büyüğünü bulur;

    – COUNT(), bir sütunda yer alan değerlerin sayısını sayar;

    – COUNT(*), sorgu sonuç tablosundaki satır sayısını sayar.

    Toplam işlev bağımsız değişkeni, önceki örnekte olduğu gibi basit bir sütun adı veya kişi başına verginin hesaplanmasını belirten aşağıdaki sorguda olduğu gibi bir ifade olabilir:

    ORTALAMA SEÇ(TOPLA*0,13)

    Bu sorgu, PERSON tablosundaki her satır için değerleri (SUMD*0.13) içeren geçici bir sütun oluşturur ve ardından geçici sütunun ortalamasını hesaplar.

    Tüm Zelenograd sakinlerinin gelirlerinin toplamı, SUM toplama işlevi kullanılarak hesaplanabilir:

    KİŞİDEN TOPLAM(TOPLAM) SEÇİN

    Birkaç kaynak tablo birleştirilerek elde edilen bir sonuç tablosu için toplamları hesaplamak için bir toplama işlevi de kullanılabilir. Örneğin, "Burs" adı verilen bir kaynaktan sakinlerin aldığı toplam gelir miktarını hesaplayabilirsiniz:

    TOPLAM(PARA) SEÇ

    KARDAN, HAVE_D

    NERDE PROFIT.ID=HAVE_D.ID

    VE PROFIT.SOURCE='Burs'

    Toplama işlevleri MIN() ve MAX(), sırasıyla en küçük ve en büyük değer masada. Ancak, sütun sayısal veya dize değerleri ya da tarih veya saat değerleri içerebilir.

    Örneğin, şunları tanımlayabilirsiniz:

    (a) ikamet edenler tarafından alınan en düşük toplam gelir ve ödenecek en yüksek vergi:

    MIN(TOPLAM), MAKS(TOPLAM*0,13) SEÇİN

    (b) ikamet eden en yaşlı ve en genç kişinin doğum tarihleri:

    MIN(RDATE), MAX(RDATE) SEÇİN

    (c) listedeki ilk ve en son ikamet edenlerin soyadları, adları ve soyadı, alfabetik olarak sıralanmıştır:

    MIN(FIO), MAX(FIO) SEÇİN

    Bu toplama işlevlerini uygularken, sayısal verilerin aritmetik kurallara göre karşılaştırıldığını, tarihlerin sırayla karşılaştırıldığını (önceki tarih değerleri sonrakilerden daha küçük kabul edilir), zaman aralıklarının sürelerine göre karşılaştırıldığını hatırlamanız gerekir.

    Dize verileriyle MIN() ve MAX() işlevlerini kullanırken, iki diziyi karşılaştırmanın sonucu kullanılan karakter kodlama tablosuna bağlıdır.

    COUNT() toplama işlevi, herhangi bir türdeki bir sütundaki değerlerin sayısını sayar:

    (a) 1. mikro bölgede kaç daire var?

    ADR'NİN "%, 1_ _-%" GİBİ ADR'NİN YERİNDEN COUNT(ADR) SEÇİN

    (b) kaç sakinin gelir kaynağı var?

    HAVE_D'DEN SAYI (FARKLI NOM) SEÇİN

    (c) Sakinler tarafından kaç tane gelir kaynağı kullanılıyor?

    HAVE_D'DEN SAYI SEÇ(DISTINCT ID) (DISTINCT anahtar sözcüğü, bir sütundaki yinelenmeyen değerlerin sayıldığını belirtir).

    özel agrega SAY işlevi(*) veri değerlerini değil, sonuç tablosundaki satırları sayın:

    (a) 2. mikro bölgede kaç daire var?

    ADR'NİN "%, 2__-%" GİBİ ADR'NİN YERİNDEN COUNT(*) SEÇİN

    (b) Ivanov Ivan Ivanovich'in kaç tane gelir kaynağı var?

    PERSON'DAN SAYI(*) SEÇİN, HAVE_D WHERE FIO="Ivanov Ivan Ivanovich" VE PERSON.NOM=HAVE_D.NOM

    (c) Belirli bir adresteki bir apartman dairesinde kaç kişi yaşıyor?

    ADR'NİN OLDUĞU KİŞİDEN SAYI(*) SEÇİN=“Zelenograd, 1001-45”

    Toplama işlevlerine sahip özet sorguların nasıl yürütüldüğünü anlamanın bir yolu, sorgu yürütmeyi iki parçaya bölünmüş olarak düşünmektir. İlk olarak, sorgunun toplama işlevleri olmadan nasıl çalışacağı belirlenir ve birden çok sonuç satırı döndürülür. Toplama işlevleri daha sonra tek bir özet satırı döndürerek sorgu sonuçlarına uygulanır.

    Örneğin, aşağıdaki karmaşık sorguyu ele alalım: kişi başına düşen ortalama toplam geliri, sakinlerin toplam gelirlerinin toplamını ve kaynağın ortalama gelirini, sakinlerin toplam gelirinin yüzdesi olarak bulun. Cevap operatör tarafından verilir.

    PERSON, PROFIT, HAVE_D WHERE PERSON.NOM=HAVE_D.NOM AND HAVE_D.ID=PROFIT.ID'DEN ORTALAMA(TOPLAM), TOPLAM(TOPLAM), (100*ORTA(MONEY/SUMD)) SEÇİN

    Toplama işlevleri olmadan, sorgu şöyle görünür:

    KİŞİDEN TOPLAM, TOPLAM, PARA/TOPLAM SEÇİN, KAR, HAVE_D WHERE PERSON.NOM=HAVE_D.NOM VE HAVE_D.ID=KAR.ID

    ve her ikamet eden kişi ve belirli bir gelir kaynağı için bir satır sonuç döndürür. Toplama işlevleri, özet sonuçları olan tek satırlık bir tablo oluşturmak için sorgunun sonuç tablosunun sütunlarını kullanır.

    Herhangi bir sütun adı yerine, döndürülen sütunlar dizesinde bir toplama işlevi belirtebilirsiniz. Örneğin, iki toplama işlevinin değerlerini toplayan veya çıkaran bir ifadenin parçası olabilir:

    KİŞİDEN MAX(SUMD)-MIN(SUMD) SEÇİN

    Bununla birlikte, bir toplama işlevi, başka bir toplama işlevinin argümanı olamaz, örn. iç içe toplama işlevleri yasaktır.

    Ayrıca, döndürülen sütunlar listesinde toplama işlevlerini ve normal sütun adlarını aynı anda kullanamazsınız, çünkü bu bir anlam ifade etmez, örneğin:

    KİŞİDEN FIO, SUM(TOPLA) SEÇİN

    Burada, listenin ilk öğesi DBMS'ye birkaç satırdan oluşacak ve her sakin için bir satır içerecek bir tablo oluşturmasını söyler. Listenin ikinci öğesi, DBMS'den SUMD sütunundaki değerlerin toplamı olan tek bir sonuç değeri döndürmesini ister. Bu iki yön birbiriyle çelişir ve bir hataya neden olur.

    Yukarıdakiler, alt sorguların ve gruplandırmalı sorguların işlenmesi durumları için geçerli değildir.

    Özetlemeyi öğrenelim. Hayır, bunlar SQL öğrenmenin sonuçları değil, veritabanı tablolarının sütunlarının değerlerinin sonuçlarıdır. SQL toplama işlevleri, tek bir sonuç değeri üretmek için bir sütunun değerleri üzerinde çalışır. En sık kullanılan SQL toplama işlevleri SUM, MIN, MAX, AVG ve COUNT'tur. Toplama işlevlerinin kullanılması gereken iki durum vardır. İlk olarak, toplama işlevleri kendi başlarına kullanılır ve tek bir sonuç değeri döndürür. İkinci olarak, toplama işlevleri SQL GROUP BY yan tümcesiyle, yani her grupta ortaya çıkan değerleri elde etmek için alanlara (sütunlara) göre gruplama ile kullanılır. İlk olarak, gruplama olmadan toplama işlevlerinin kullanıldığı durumları ele alalım.

    SQL TOPLA işlevi

    SQL TOPLA işlevi, bir veritabanı tablosundaki bir sütunun değerlerinin toplamını döndürür. Yalnızca değerleri sayı olan sütunlara uygulanabilir. Ortaya çıkan toplamı almak için SQL sorguları şöyle başlar:

    TOPLAM(SÜTUN ADI) SEÇ ...

    Bu ifadeyi FROM (TABLE_NAME) takip eder ve ardından WHERE yan tümcesi kullanılarak bir koşul belirtilebilir. Ek olarak, yalnızca benzersiz değerlerin dikkate alınacağını belirtmek için bir sütun adının önüne DISTINCT eklenebilir. Varsayılan olarak, tüm değerler dikkate alınır (bunun için özellikle DISTINCT'i değil, ALL'yi belirtebilirsiniz, ancak ALL kelimesi isteğe bağlıdır).

    örnek 1Şirketin departmanları ve çalışanları hakkında veri içeren bir veritabanı var. Personel tablosunda ayrıca çalışan maaş verilerini içeren bir sütun bulunur. Tablodan seçim şu şekildedir (resmi büyütmek için farenin sol tuşuyla üzerine tıklayın):

    Tüm maaşların toplamını almak için aşağıdaki sorguyu kullanın:

    Personelden SUM(Maaş) SEÇİN

    Bu sorgu 287664.63 değerini döndürür.

    Ve şimdi . Alıştırmalarda, görevleri pratikte karşılaşılanlara yaklaştırarak zaten karmaşıklaştırmaya başlıyoruz.

    SQL MIN işlevi

    SQL MIN işlevi, değerleri sayı olan sütunlarda da çalışır ve sütundaki tüm değerlerin minimumunu döndürür. Bu işlev, SUM işlevine benzer bir sözdizimine sahiptir.

    Örnek 3 Veritabanı ve tablo örnek 1'deki ile aynıdır.

    42 numaralı departman çalışanları için asgari ücretin bulunması gerekmektedir. Bunun için aşağıdaki sorguyu yazınız:

    Sorgu, 10505.90 değerini döndürür.

    Ve yeniden için egzersiz bağımsız karar . Bu ve diğer bazı alıştırmalarda, yalnızca Personel tablosuna değil, aynı zamanda şirketin bölümleriyle ilgili verileri içeren Kuruluş tablosuna da ihtiyacınız olacak:


    Örnek 4 Kuruluş tablosu, şirketin bölümleriyle ilgili verileri içeren Personel tablosuna eklenir. Tek bir çalışanın Boston'da bulunan bir departmanda çalıştığı minimum yıl sayısını çıkarın.

    SQL MAX işlevi

    SQL MAX işlevi benzer şekilde çalışır ve belirlemek gerektiğinde kullanılan benzer bir sözdizimine sahiptir. maksimum değer tüm sütun değerleri arasında.

    Örnek 5

    42 numaralı departman çalışanlarının azami maaşını bulmanız gerekiyor. Bunu yapmak için aşağıdaki sorguyu yazın:

    Sorgu, 18352.80 değerini döndürür.

    Zamanı geldi kendi kaderini tayin için egzersizler.

    Örnek 6 Yine iki tablo ile çalışıyoruz - Personel ve Org. Departmanın adını ve Doğu departmanları grubuna (Bölüm) ait departmanda bir çalışan tarafından alınan maksimum komisyon miktarını görüntüleyin. Kullanmak JOIN (tabloları birleştirme).

    SQL AVG işlevi

    Daha önce açıklanan işlevlerin sözdizimi hakkında söylenenler, SQL AVG işlevi için de geçerlidir. Bu işlev, bir sütundaki tüm değerlerin ortalamasını döndürür.

    Örnek 7 Veritabanı ve tablo önceki örneklerdeki ile aynıdır.

    42 numaralı departman çalışanlarının ortalama hizmet sürelerini bulmamız istensin. Bunu yapmak için aşağıdaki sorguyu yazıyoruz:

    Sonuç 6.33 olacak

    Örnek 8 Tek masa ile çalışıyoruz - Personel. 4 ila 6 yıl arası deneyime sahip çalışanların ortalama maaşını görüntüleyin.

    SQL SAYI işlevi

    SQL COUNT işlevi, bir veritabanı tablosundaki kayıt sayısını döndürür. Sorguda SELECT COUNT(COLUMNAME) ... belirtirseniz, sonuç, sütun değerinin NULL (tanımsız) olduğu kayıtları hesaba katmadan kayıt sayısı olacaktır. Bağımsız değişken olarak bir yıldız işareti kullanır ve bir SELECT COUNT(*) ... sorgusu başlatırsanız, sonuç tablodaki tüm kayıtların (satırların) sayısı olacaktır.

    Örnek 9 Veritabanı ve tablo önceki örneklerdeki ile aynıdır.

    Komisyon alan tüm çalışanların sayısını bilmek istiyorsunuz. Comm sütun değerleri NULL olmayan çalışan sayısı aşağıdaki sorguyu döndürür:

    Personelden COUNT(Comm) SEÇİN

    Sonuç 11 değeri olacaktır.

    Örnek 10 Veritabanı ve tablo önceki örneklerdeki ile aynıdır.

    Tablodaki toplam kayıt sayısını öğrenmek istiyorsanız, COUNT işlevinin bağımsız değişkeni olarak yıldız işaretli sorguyu kullanın:

    Personelden COUNT(*) SEÇİN

    Sonuç değeri 17 olacaktır.

    Sonraki kendi kaderini tayin için egzersiz bir alt sorgu kullanmanız gerekir.

    Örnek 11. Tek masa ile çalışıyoruz - Personel. Plains departmanındaki çalışan sayısını görüntüleyin.

    İşlevleri SQL GROUP BY ile Toplayın

    Şimdi SQL GROUP BY yan tümcesiyle birlikte toplama işlevlerinin kullanımına bakalım. SQL GROUP BY deyimi, bir veritabanı tablosunda ortaya çıkan değerleri sütunlara göre gruplandırmak için kullanılır.

    Örnek 12. Bir veritabanı portalı reklamları var. Hafta boyunca gönderilen reklamlarla ilgili verileri içeren bir Reklamlar tablosuna sahiptir. Kategori sütunu, büyük reklam kategorileri (örneğin, Emlak) hakkında veriler içerir ve Parçalar sütunu, kategorilere dahil edilen daha küçük parçalar hakkında veriler içerir (örneğin, Daireler ve Villalar bölümleri, Emlak kategorisinin parçalarıdır). Birimler sütunu, gönderilen reklam sayısına ilişkin verileri içerir ve Para sütunu, reklamları göndermek için kazanılan para miktarını içerir.

    KategoriparçaBirimlerPara
    UlaşımMotorlu Taşıtlar110 17600
    EmlakDaireler89 18690
    Emlakyazlıklar57 11970
    Ulaşımmotosikletler131 20960
    Yapı malzemeleriPanolar68 7140
    elektrik Mühendisliğitelevizyonlar127 8255
    elektrik Mühendisliğibuzdolapları137 8905
    Yapı malzemeleriKayıtlar112 11760
    Boş vakitKitabın96 6240
    EmlakEvde47 9870
    Boş vakitMüzik117 7605
    Boş vakitOyunlar41 2665

    SQL GROUP BY yan tümcesini kullanarak, her kategoride reklam göndererek elde edilen para miktarını bulun. Aşağıdaki talebi yazıyoruz.

    Toplama işlevlerini kullanma

    SQL, çeşitli kategorilerdeki birçok yerleşik işlevi tanımlar; bunların arasında, birden çok satırın sütunlarının değerleri üzerinde çalışan ve tek bir değer döndüren toplama işlevleri tarafından özel bir yer işgal edilir. Toplama fonksiyonlarının argümanları hem tabloların sütunları hem de bunların üzerindeki ifadelerin sonuçları olabilir. Toplama işlevleri, diğer aritmetik ifadelere dahil edilebilir. Aşağıdaki tablo, en sık kullanılan standart tekli toplama işlevlerini listeler.


    Tekli toplama işlevinin genel biçimi aşağıdaki gibidir:

    işlev_adı([ALL | DISTINCT] ifadesi)

    DISTINCT, işlevin bağımsız değişkenin yalnızca farklı değerlerini dikkate alması gerektiğini belirtir ve ALL, kopyalar dahil tüm değerleri belirtir (bu varsayılandır). Örneğin 1, 1, 1 ve 3 değerlerine sahip sütun satırları için DISTINCT anahtar sözcüğü ile AVG işlevi 2 döndürür, ancak ALL anahtar sözcüğü ile 1,5 döndürür.

    Toplama işlevleri, SELECT ve HAVING yan tümcelerinde kullanılır. Burada SELECT yan tümcesindeki kullanımlarına bakacağız. Bu durumda, işlev bağımsız değişkenindeki ifade, SELECT yan tümcesinin girdi tablosunun tüm satırlarına uygulanır. Ayrıca, bir sonraki bölümde inceleyeceğimiz bir GROUP BY yan tümceniz yoksa, bir SELECT yan tümcesinde hem toplama işlevlerini hem de tablo sütunlarını (veya onlarla birlikte ifadeleri) kullanamazsınız.

    COUNT işlevinin iki biçimi vardır. İlk durumda, giriş tablosunun satır sayısı, ikinci durumda, giriş tablosundaki argüman değerlerinin sayısı döndürülür:

    • SAYMAK(*)
    • COUNT( ifade)

    Bu işlevi kullanmanın en basit yolu, bir tablodaki satır sayısını saymaktır (tümünü veya belirli bir koşulu karşılayanları). Bunun için sözdiziminin ilk varyantı kullanılır.

    Sorgu: Bilgisi veri tabanında bulunan ürün türlerinin sayısı.

    COUNT(*) OLARAK SEÇİN "ürün sayısı"

    Üründen

    COUNT işlevinin sözdiziminin ikinci varyantında, tek bir sütunun adı bağımsız değişken olarak kullanılabilir. Bu durumda, giriş tablosunun bu sütunundaki tüm değerlerin veya yalnızca tekrarlanmayanların (DISTINCT anahtar sözcüğü kullanılırken) sayısı sayılır.

    Sorgu: Müşteri tablosunda bulunan farklı adların sayısı.

    SAYI SEÇİN (FARKLI FNAME)

    Müşteriden

    Diğer tekli toplama işlevlerinin kullanımı, MIN ve MAX işlevlerinin kullanılması dışında COUNT işlevine benzer. anahtar kelimeler DISTINCT ve ALL bir anlam ifade etmiyor. SAY, MAKS ve MİN işlevleriyle, sayısal alanların yanı sıra karakter alanları da kullanılabilir. Toplam işlev bağımsız değişkeni değer içermiyorsa, COUNT işlevi 0 döndürür ve diğerleri NULL döndürür.

    MAKS SEÇİN(SiparişTarihi)

    İTİBAREN

    NEREDE SiparişTarihi"1.09.2010"

    görev için bağımsız iş: Aşağıdaki verileri seçmek için SQL dili sorgularında formüle edin:

    • Tüm siparişlerin toplam maliyeti;
    • Müşteri tablosunda yer alan farklı şehirlerin sayısı.