SQL toplam işlevi: SUM. SQL Toplama İşlevleri - SUM, MIN, MAX, AVG, COUNT

Golovna / Nalaştuvannya

SQL - Ders 11

Alt toplam işlevlerine istatistiksel, toplama veya alt toplam işlevleri de denir. Bu işlevler, alt öğe için satır kümesini ve bir değerin dönüşünü tamamlar. Bu tür beşten az işlev vardır:
  • AVG() İşlev ortalamayı döndürür.

  • COUNT() İşlev, sütundaki satır sayısını döndürür.

  • MAX() İşlev, sütundaki en büyük değeri döndürür.

  • MIN() İşlev, sütundaki en küçük değeri döndürür.

  • SUM() İşlev, yayılmanın toplam değerini döndürür.

Birinden - COUNT () - 8. derste birbirimizi zaten tanıdık. Reshtoyu bir kerede tanıyalım. Diyelim ki mağazamızdaki kitapların minimum, maksimum ve ortalama fiyatını öğrenmek istedik. Sadece fiyat tablolarından (fiyatlar) fiyat için minimum, maksimum ve ortalama değeri almanız gerekir. Basit istek:

Fiyatlardan MIN(fiyat), MAX(fiyat), AVG(fiyat) SEÇİN;

Şimdi, "Budynok druk" (id=2) adlı postacının bize ne kadar para getirdiğini öğrenmek istiyoruz. Böyle bir isteği katlamak o kadar kolay değil. Sakin olalım, yoga nasıl katlanır:

1. Teslimatlar (gelen) tablosundan, "Budynok druku" posta lideri (id=2) tarafından talep edildiği gibi teslimatların tanımlayıcılarını (id_incoming) seçin:

2. Şimdi, teslimat günlüğündeki (magazine_incoming) tablolardan malları (id_product) ve teslimatların 1. maddesinde bulunan miktarları seçmeniz gerekiyor. Tobto, depozitonun 1. paragrafından talep edilecektir:

3. Şimdi ortaya çıkan tabloya, fiyat tablolarında kayıtlı bulunan ürünlerin fiyatlarını eklememiz gerekiyor. Bu nedenle, dergi teslimatları (magazine_incoming) ve Fiyatlar (fiyatlar) tablolarını öğe id_product'a göre birleştirmemiz gerekiyor:

4. Ortaya çıkan masada Suma'nın asılı olmadığı çok açık. hesaplanan miktar. Bu tür ifadeler oluşturma yeteneği MySQL'e iletildi. Soruşturmada neyin sayılması gerektiğini ve neyin suçlu olduğunu belirtmek kimin için daha az gereklidir. Kıçımızın summa denen bir stovpet'i var ve şarapları saymak, miktar ve fiyattan twir stovpts olacaktır. Yeni binanın adı AS kelimesi ile desteklenmektedir:

dergi_incoming.id_product, dergi_incoming.quantity, fiyatlar.fiyat, dergi_incoming.quantity*prices.price FROM Magazine_incoming FROM özet olarak SEÇİN, fiyatlar NEREDE dergi_incoming.id_product= fiyatlar.id_product AND id=com

5. Güzel, daha az summa kaldı ve biliyoruz ki, para karşılığında "Budinok'tan Druk'a" postacı bize mal getirdi. SUM() işlevini kullanmak için sözdizimi şöyledir:

tablo_adı'ndan SUM(tablo_adı) SEÇİN;

Im'ya stovptsya bize v_domo - summa ve tablonun adının ekseni bizde değil, bu yüzden isteğin sonucu olmayacak. iş nedir? Bu tür davranışlar için MySQL'in bir Bildirimi vardır. Vermek - hangisinin benzersiz bir isim umduğunu ve hangisinin veri tabanına kaydedilebileceğini umarak daha ileri bir oy için bir oy isteyin.

Bir saldırıyı uyarmak için sözdizimi:

GÖRÜNÜMÜ OLUŞTUR View_name AS sorgusu;

Report_vendor tarafından bildirilen isteğimizi kaydedelim:

Report_vendor'u SELECT OLARAK GÖRÜNTÜLEYİN dergi_incoming.id_product, dergi_incoming.quantity, fiyatlar.fiyat, dergi_incoming.quantity*prices.price FROM Magazine_incoming FROM, fiyatlar NEREDE dergi_incoming.id_com=product_com );

6. Eksen şimdi SUM() toplam işleviyle bükülebilir:

Report_vendor'DAN TOPLA(toplam) SEÇİN;

Axes mi ve sonuca ulaştık, ancak bunun için katkılar, toplama, sütunlar, sayılanlar ve tezahürler için puan alma fırsatımız oldu. Bu nedenle, bazen otrimannya için sonuç başka bir yol olmadan düşünülmelidir. Sonra iki çok önemli konuya girdik - bu olgunun ana noktalarını sayarak. Bunlardan bir rapor halinde bahsedelim.

Sayım alanları (stowpts)

Popo üzerinde bugünün matematik alanına baktık. Burada çarpma işlemi (*) ve vodnimannya (-), ek (+), rozpodіl (/) olarak kazanmanın mümkün olduğunu eklemek isterim. Gelişmiş sözdizimi:

stow_name_1, stow_name_2, stow_name_1*stow_name_2'yi tablo_adı'ndan numaralandırılmış_stow_name OLARAK SEÇİN;

Diğer bir nüans ise sayılacak sütun adının görevi için seçilen AS anahtar kelimesidir. Aslında, hangi anahtar kelimenin yardımı için, stovptsіv olup olmadıklarına dair takma adlar verilir. Bu gerekli mi? Kodun hızlı okunması için. Örneğin, tezahürümüz şöyle görünebilir:

Report_vendor AS SELECT A.id_product, A.quantity, B.price, A.quantity*B.price FROM Magazine_incoming AS, fiyatlar B AS B WHERE A.id_product= B.id_product AND id_incoming= ( id_ining WHERE id_vendor'u SEÇİN = 2);

Bekle, bu kadar kısa ve akıllıca olan ne?

Görünüm

Tezahürlerin yaratılmasının sözdizimine baktık. Onların tecellilerinin yaratılmasından sonra, tıpkı bir masa gibi, hak vermek mümkündür. Onlardan önce kazanmak, verileri filtrelemek ve sıralamak, birini diğerine eklemek için. Bir yandan, genellikle sıkışan (kıçımız gibi) katlanan içeceklerden tasarruf etmenin de iyi bir yolu.

Ale kızak hafızası, scho zavlennya - tse tabloları, bu yüzden kokular verileri kaydeder, onları diğer tablolardan alma olasılığı daha düşüktür. Öncelikle tablolardaki verileri değiştirirseniz sunumun sonuçları da değişecektir. Ve farklı bir şekilde, dosyalamadan önce bir istek için, VTYS'nin üretkenliğini azaltmak için gerekli veriler için istekler vardır. Tozh zlovzhivat onları varto değil.

İş ortağınız tarafından piyasaya sürülen bilgisayar modellerinin sayısını nasıl anlarsınız? Bir bilgisayarda ortalama değer nasıl hesaplanır, aynı teknik özellikleri nasıl bulabilirsiniz? Gerçek istatistiksel bilgilerle ilgili sayı ve diğer beslenme bazında, yardım için tavsiye alabilirsiniz. alt torba (toplama) işlevleri. Standart, aşağıdaki toplu işlevleri aktarır:

Tüm işlevler aynı değeri döndürür. hangi işlevle SAYI, MINі MAKS o saatte herhangi bir veri türünden önce zastosovnі TOPLAі ortalama sayısal alanlar için daha az vikoristovuyutsya. Fonksiyonlar arasında artıklık SAYMAK(*)і SAYMAK(<имя поля>) Bir ibnenin arkasındaki bir arkadaşın NULL değerinden vazgeçmediğine inanıyorum.

popo Kişisel bir bilgisayar için minimum ve maksimum fiyatı öğrenin:

popo A yazısı tarafından verilen gerçek bilgisayar sayısını öğrenin:

popo A tipine göre sıralanan farklı modellerin sayısının saldırgan bir sıralama olarak formüle edilebileceğini nasıl söyleyebiliriz (bu gerçeğe göre, cilt modeli Ürün tablosuna bir kez kaydedilir):

popo Seçim aracı A tarafından izin verilen mevcut farklı modellerin sayısını bulun. Sayı öndekine benzer, bu durumda seçim aracı A tarafından izin verilen toplam model sayısını belirtmek gerekir. PC tablosundaki farklı modellerin sayısını da bilmek gerekir (satışa açıktır).

İstatistiksel göstergelerin seçiminin yalnızca benzersiz değerler kazanması için, toplama işlevi argümanları vicorist olabilirsin DISTINCT parametresi. İkinci parametre TÜMÜ umovchannyam için vikoristovuєtsya ve sütunda dönen tüm anlamların aptallarını iletmek. Şebeke,

PC modellerinin sayısını nasıl hesaba katmamız gerekiyor, viroblenih deri virobnik, o zaman vikoristovuvat gerekir GROUP BY, sözdizimsel olarak saldırgan NEREDE önermeler.

Öneri GRUP TARAFINDAN

Öneri GRUP TARAFINDAN vikoristovuetsya vyznachennya, zastosovuvatisya olabilen vihіdny satır grupları toplama işlevleri (COUNT, MIN, MAX, AVG ve SUM). Günün bir önerisi ve muzaffer toplama işlevleri olarak, isimlerle birlikte tüm adımlar tahmin edildi. SEÇME dahil edilmesi nedeniyle toplu işlevler, ve işlevler, isteğin yüklemi ile eşleşiyormuş gibi, tüm satır kümesine zastosovuvatysya olacaktır. Başka bir şekilde, SELECT listesinin tüm sütunları, girmedi toplama işlevinde belirtilmelidir GROUP BY. Bu nedenle, tüm satırlar, bu sütunlarda aynı değer kombinasyonlarıyla karakterize edilen gruplara ayrılır. Oradan cilt grubuna, toplu işlevler engellenecektir. GROUP BY içinde tüm NULL değerlerinin eşit olarak kabul edildiğini unutmayın. NULL değerleri içermesi gereken alanları gruplarken, bu tür tüm satırlar aynı gruba düşecektir.
Yakscho açık önermeler için GROUP BY, SELECT ifadesinde günlük toplama işlevleri, sonra dış görünüm grubundan sadece bir sıra çevirin. DISTINCT anahtar sözcüğünden gelen bu olasılık, sonuç kümesinden yinelenen satırları hariç tutmak için seçilebilir.
Basit bir örneğe bakalım:
Model SEÇ, COUNT(model) Qty_model olarak, AVG(fiyat) Ort_fiyat olarak
PC'DEN
modele GÖRE GRUP;

PC'nin cilt modelinin talebi üzerine, miktar ve ortalama kalite belirtilir. Aynı model (model numarası) değerlerine sahip satırlar grubu niteler ve SELECT çıktısında değer sayısı ve skin grubu için ortalama değer hesaplanır. Yazmanın sonucu bir tablo ile karşınıza çıkacaktır:
model adet_model Ort_fiyat
1121 3 850.0
1232 4 425.0
1233 3 843.33333333333337
1260 1 350.0

Yakby, SELECT literal stovpets z tarihinde, belirli bir cilt tarihinin göstergelerinin sayısını saymak mümkün olacaktır. Bunun için bir gruplama olarak tarihi eklemek gerekli ve hatta cilt kombinasyon değeri (model-tarih) için toplam fonksiyonlar hesaplandı.

şarkıcıların Іsnuє çaçası Toplama işlevlerini kazanma kuralları:

  • Sonuç olarak aynı satırda alınmadı(veya grup için bir satır), ardından günlük toplam işlevlerden olsun, hesaplama için çıktı verileri. Ve burada sayma fonksiyonlarının sonucu sıfır olacak ve diğer fonksiyonların sonucu NULL olacaktır.
  • Argüman toplama işlevi toplama işlevlerini kendiniz tanımlayamazsınız(fonksiyon içinde fonksiyon). Tobto. bir içkide, diyelim ki, maksimum ortalama değerlere ulaşmak mümkün değildir.
  • COUNT є yazma fonksiyonunun sonucu bütün sayı(INTEGER) Diğer toplama işlevleri, işlenmekte olan veri türünü azaltır.
  • Benzer şekilde, SUM işlevini kazanırken, sonuç çıkarılır, bu da veri türünün maksimum değerini değiştirir, kazanır, suçlar. Pardon.

Baba, senden intikam almamanı istiyorum. GROUP BY, o zamanlar toplu işlevler, dahil önermeyi SEÇ; İntikam nasıl istenir GROUP BY, bir sütunun veya bir sütun grubunun aynı değeri olabilen dış görünüm yazarak satırlar, görevler için GROUP BY, bir grup ol, ki toplu işlevler vykonuyutsya cilt grubu okremo.

önerme

Yakscho WHERE yan tümcesi satırları filtrelemek için bir yüklem tanımlar, ardından önerme durgun gruplamadan sonra grupları değerler için filtreleyen bir yüklem benzeri bir atama için toplu işlevler. Bu önerme, yardım için götürüldüğü için anlamın yeniden doğrulanması için gereklidir. toplama işlevi birkaç satırlık kayıt değil, oturum açıldı kelimeler, a bu tür satırlardan oluşan bir grup. Bu nedenle, böyle bir yeniden doğrulama yapılamaz. NEREDE.

Vchimosya pіdbivati ​​​​pіdbags. Hі, SQL hesaplamasının sonuçları değil, veri tabanı tablolarının değerlerinin alt torbalarıdır. Toplam SQL işlevleri, tek bir sonuç değerine kadar değere göre değişir. SQL toplama işlevleri SUM, MIN, MAX, AVG ve COUNT en sık kullanılır. Toplama işlevleri arasında iki fark vardır. Birincisi: toplu işlevler, güçlü kuvvetler tarafından galip gelir ve bir bileşke değeri döndürür. Diğer: Toplama işlevleri, SQL GROUP BY operatörü ile eşleştirilir, yani elde edilen değerleri skin grubundan çıkarmak için alanlara (standlar) göre gruplanır. Toplama fonksiyonlarının gruplandırmadan dağılımının başlangıcına bir göz atalım.

SQL SUM işlevi

SQL SUM işlevi, bir veritabanı tablosunun yayılan değerlerinin toplamını döndürür. Vaughn, böyle bir sayının anlamı olan stovptsіv'a kadar yalnızca zastosovuvatisya yapabilir. SQL'den elde edilen toplamı almasını istemek şöyle başlar:

SUM SEÇ (IM'I_COLUMN) ...

Bundan sonra, FROM (IM'YA_TABLES) öğesini takip edin ve ardından ek bir WHERE yapısından sonra, zihni de belirtebilirsiniz. Ayrıca sütun adından önce DISTINCT yazılabilir, bu da yalnızca benzersiz değerlerin korunduğu anlamına gelir. Kilitleme için tüm değerler iade edilir (bunun için özellikle DISTINCT değil, TÜMÜ belirtebilirsiniz, ancak TÜMÜ bağlayıcı değildir).

Bu dersin veri tabanını MS SQL Server'a indirmek istiyorsanız, DBMS bilgisayarınızda kurulu değilse, kurabilirsiniz, huysuz talimatlar .

Şirketlerin veri tabanı ile çalışıyoruz - Şirket1. ts_єї veritabanı verileri, її tablosu ve yanan tablo danimi oluşturmak için komut dosyası - in cim göndermek için dosya .

örnek 1.ї її pіdrozdіli ve svіrobіtnikіv hakkında verileri olan firmaların veri tabanı. Personel tablosu ayrıca işe alım görevlilerinin maaşlarına ilişkin verileri de içerir. Tablodan seçim şöyle görünebilir (resmi büyütmek için farenin sol tuşu ile üzerine tıklayın):

Fazla maaş bordrolarının toplamını sabitlemek için, talebi ilerletmek mümkündür (MS SQL Server'da - USE şirketi1'in ön tasarımından;):

Personelden SUM (Maaş) SEÇİN

Tsey, 287664.63 değerinin dönüşünü ister.

Ve şimdi . Sağda, zaten işleri kolaylaştırmaya ve onları pratik olan sessizliğe yaklaştırmaya başlıyor.

SQL MIN İşlevi

SQL MIN işlevi ayrıca değerin minimum ortalama değerini döndürmek için bir dizi değer kullanır. Bu işlevin, SUM işlevininkine benzer bir sözdizimi vardır.

Örnek 3. Veri tabanı tablodur - uygulama 1'deki ile aynı.

42 numaralı spіvrobіtnikіv vіddіl z için asgari ücret hakkında bilgi edinmek gerekir. Avans talebini kimin için yazıyoruz (MS SQL Server'da - ön tasarım USE şirketi1 ile;):

Dönüş değeri 10.505.90'dır.

yeniliyorum kendi kendine yeterlilik hakkı. Bunu yapma hakkına sahip olanlar için sadece Personel tablosu değil, aynı zamanda Org tablosu da şirketin güncellemeleriyle ilgili verilerin intikamını almak için gereklidir:


Örnek 4. Org tablosu, şirketin güncellemelerinin verilerinin intikamını alan Personel tablosuna eklenir. Vivesti minimum rokiv sayısı, opratsovanyh bir spіvrobіtnik vіddіlі, Bostonі yakınlarındaki rastashovanuyu.

SQL MAX işlevi

SQL MAX işlevi benzer şekilde çalışır, bu nedenle sistemin ortalama değerinin maksimum değerini ayarlamak gerekirse duracaktır.

Örnek 5.

42 numaralı spivrobitnikiv çalışanının maksimum maaşını belirlemek gerekir. Avans talebini yazdığımız (MS SQL Server'da - ön tasarım ile şirket1 KULLANIN;):

18352.80 değerini okuyun

gel saat kendi kendine yeterlilik hakkı.

Örnek 6.İki tabloya aşinayım - Staff ve Org. Doğu ödeme grubuna (Bölüm) ait olan liderden bir dönüş alacağı için komisyonun maksimum değerinin adını girin. Vikoristati JOIN (tablo oluşturma).

SQL AVG işlevi

Doğru ve SQL AVG işlevlerine benzer olarak ileri işlev açıklamaları için sözdizimine başvurulur. Bu işlev, tükürüğün ortalama değerinin ortalama değerini döndürür.

Örnek 7. Veri tabanı o tablodur - ön izmaritlerdekiyle aynı.

42 numaralı işçinin sivrobitniklerinin ortalama iş tecrübesi hakkında bilgi edinelim. Kimler için saldırgan bir istek yazıyoruz (MS SQL Server'da - USE şirketi1'in ön tasarımı ile;):

Sonuç 6.33 değeri olacaktır.

Örnek 8. Bir masa ile Pratsiyuemo - Personel. 4 ila 6 yıl arasında deneyime sahip uygulayıcıların ortalama maaşını girin.

SQL SAYI işlevi

SQL COUNT işlevi, bir veritabanı tablosundaki kayıt sayısını döndürür. Sorguda SELECT COUNT(IM_COLUMN) ... öğesini seçerseniz, sonuç, NULL (tanımsız) değerlere sahip uranyum kayıtları olmayan kayıtların sayısı olacaktır. Bir z ile argüman olarak kazanırsanız ve SEÇİM SAYISI(*) ... diye sormaya başlarsanız, sonuç tablodaki tüm kayıtların (satırların) sayısı olacaktır.

Örnek 9. Veri tabanı o tablodur - ön izmaritlerdekiyle aynı.

Tüm spivrobitniklerin sayısını, komisyonların nasıl düşüleceğini öğrenmek gerekir. Comm değerlerinin NULL olmadığı sütun sayısı, sırayla daha ileridir (MS SQL Server'da - ön yapı USE şirketi1 ile;):

Personelden SAYI SEÇ (İletişim)

Sonuç 11 değeri olacaktır.

popo 10 Veri tabanı o tablodur - ön izmaritlerdekiyle aynı.

Tablodaki toplam kayıt sayısını tanımak gerekirse, otomatik olarak SAYI işlevinin bir argümanı olarak yüklenecektir (MS SQL Server'da - ön yapı USE şirketi1 ile;):

Personelden SAYI SEÇ (*)

Sonuç 17 değeri olacaktır.

saldırıda bağımsız görüş hakkı pidzapit vikoristovuvat için gereklidir.

Örnek 11. Bir masa ile Pratsiyuemo - Personel. Vivesti, planuvannya (Plains) ile ilgilidir.

İşlevleri bir kerede SQL GROUP BY'den toplama (gruplama)

Şimdi SQL GROUP BY operatörü ile bir kerede toplama işlevlerine bakalım. SQL GROUP BY operatörü, veritabanı tablolarındaki sütunların elde edilen değerlerini gruplamak için kullanılır. sitede ders, hangi operatörün ödevleri.

"Portal goloshen 1" veri tabanına sahip Pratsyuvatimemo. Veritabanları, tablolar ve yanan veri tabloları oluşturmak için komut dosyası - cim göndermek için dosya .

popo 12 Ayrıca, portalın veri tabanı şaşkına döndü. Vaughn, Gün için dosyalama iftirayla ilgili verilerin intikamını almak için Reklamlar tablosunun intikamını aldı. Kategori bölümü, büyük iftira kategorileri (örneğin, Nerukhomist) hakkındaki verilerin intikamını almak içindir ve Parçalar bölümü, kategoriye dahil edilebilecek diğer bölümler hakkındadır (örneğin, Apartmanların ve Yazlıkların bölümleri, Nerukhomist'in parçalarıdır). kategori). Stovpets Birimleri, sersemletme sayısı hakkında veri toplamak için ve Stovpets Money - bir sersemletici dosyalamak için alınan bir kuruş toplamı hakkında.

KategoriBölümBirimlerPara
UlaşımArabalar110 17600
kuralsızlıkDaireler89 18690
kuralsızlıkyazlık evler57 11970
Ulaşımmotosikletler131 20960
Budmalzemelerdoshki68 7140
Elektrik Mühendisliğitelevizyonlar127 8255
Elektrik Mühendisliğibuzdolapları137 8905
BudmalzemelerKayıtlar112 11760
DozvilleKitabın96 6240
kuralsızlıkBudinki47 9870
Dozvillemüzik117 7605
DozvilleOyunlar41 2665

Vykoristovuyuchi operatörü SQL GROUP BY, cilt kategorisinde bir iftira göndermek için otrimanih, kuruşların toplamını biliyor. Saldırgan bir istek yazıyoruz (MS SQL Server'da - ön yapı USE adportal1'den;):

Kategori SEÇİN, KATEGORİYE GÖRE REKLAM GRUPLARINDAN PARA OLARAK SUM (Para)

popo 13 Veri tabanı, ön uçtaki tablonun kendisidir.

Kötü operatör SQL GROUP BY, z'yasuvati, cilt kategorisinin bu bölümünde en fazla kusmuk dosyalandı. Saldırgan bir istek yazıyoruz (MS SQL Server'da - ön yapı USE adportal1'den;):

REKLAMLAR GRUBU'NDAN Kategoriye Göre Maksimum OLARAK Kategori, Parça, MAX (Birim) SEÇİN

Sonuç bir tablo olacaktır:

Subsumkovy ve tek bir tablodaki bireysel değerler alınabilir UNION operatörünün yardım taleplerinin sonuçlarını birleştirmek.

İlişkisel veritabanları ve SQL dili

© 2022 androidas.ru - Android hakkında her şey