Samouczek MySQL Aggregate Functions: SUMA, AVG, MAX, MIN, COUNT, DISTINCT

Anonim

Najważniejsze są funkcje agregujące

  • Wykonywanie obliczeń na wielu wierszach
  • Z jednej kolumny tabeli
  • I zwraca pojedynczą wartość.

Norma ISO definiuje pięć (5) funkcji zagregowanych, a mianowicie;

1) LICZBA

2) SUMA
3) ŚREDNIA
4) MIN
5) MAKS

Dlaczego warto korzystać z funkcji agregujących.

Z perspektywy biznesowej różne poziomy organizacji mają różne wymagania dotyczące informacji. Menedżerowie najwyższego szczebla są zwykle zainteresowani znajomością całych liczb i nie są potrzebne szczegółowe informacje.

> Funkcje agregujące pozwalają nam łatwo tworzyć podsumowane dane z naszej bazy danych.

Na przykład z naszej bazy danych myflix zarządzanie może wymagać następujących raportów

  • Najmniej wypożyczonych filmów.
  • Najczęściej wypożyczane filmy.
  • Średnia liczba wypożyczeń każdego filmu w ciągu miesiąca.

Powyższe raporty z łatwością tworzymy za pomocą funkcji agregujących.

Przyjrzyjmy się szczegółowo funkcjom agregującym.

Funkcja COUNT

Funkcja LICZBA zwraca całkowitą liczbę wartości w określonym polu. Działa zarówno na liczbowych, jak i nieliczbowych typach danych. Wszystkie funkcje agregujące domyślnie wykluczają wartości null przed rozpoczęciem pracy z danymi.

COUNT (*) to specjalna implementacja funkcji COUNT, która zwraca liczbę wszystkich wierszy w określonej tabeli. COUNT (*) uwzględnia również wartości Null i duplikaty.

Poniższa tabela przedstawia dane w tabeli movierentals

numer referencyjny Data dokonania transakcji Data powrotu numer_ członkostwa movie_id film_ zwrócił
11 20-06-2012 ZERO 1 1 0
12 22-06-2012 25-06-2012 1 2 0
13 22-06-2012 25-06-2012 3 2 0
14 21-06-2012 24-06-2012 2 2 0
15 23-06-2012 ZERO 3 3 0

Załóżmy, że chcemy uzyskać, ile razy film o identyfikatorze 2 został wypożyczony

SELECT COUNT(`movie_id`) FROM `movierentals` WHERE `movie_id` = 2;

Wykonanie powyższego zapytania w środowisku MySQL na myflixdb daje nam następujące wyniki.

 
COUNT('movie_id')
3

Słowo kluczowe DISTINCT

Słowo kluczowe DISTINCT, które pozwala nam pominąć duplikaty w naszych wynikach. Osiąga się to poprzez grupowanie razem podobnych wartości.

Aby docenić koncepcję Distinct, wykonajmy proste zapytanie

SELECT `movie_id` FROM `movierentals`;
 
movie_id
1
2
2
2
3

Teraz wykonajmy to samo zapytanie z odrębnym słowem kluczowym -

SELECT DISTINCT `movie_id` FROM `movierentals`;

Jak pokazano poniżej, funkcja odrębna pomija zduplikowane rekordy z wyników.

 
movie_id
1
2
3

Funkcja MIN

Funkcja MIN zwraca najmniejszą wartość w określonym polu tabeli .

Jako przykład, załóżmy, że chcemy poznać rok, w którym wydano najstarszy film w naszej bibliotece, możemy użyć funkcji MIN MySQL, aby uzyskać żądane informacje.

Poniższe zapytanie pomoże nam to osiągnąć

SELECT MIN(`year_released`) FROM `movies`;

Wykonanie powyższego zapytania w środowisku MySQL na myflixdb daje nam następujące wyniki.

 
MIN('year_released')
2005

Funkcja MAX

Jak sama nazwa wskazuje, funkcja MAX jest przeciwieństwem funkcji MIN. To zwraca największą wartość z zakresu określonej tabeli .

Załóżmy, że chcemy uzyskać rok, w którym opublikowano najnowszy film w naszej bazie danych. W tym celu możemy łatwo skorzystać z funkcji MAX.

Poniższy przykład zwraca ostatni wydany rok filmowy.

SELECT MAX(`year_released`) FROM `movies`;

Wykonanie powyższego zapytania w środowisku MySQL przy użyciu myflixdb daje następujące wyniki.

 
MAX('year_released')
2012

SUMA, funkcja

Załóżmy, że chcemy raportu, który podaje całkowitą kwotę płatności dokonanych do tej pory. Możemy użyć funkcji SUMA MySQL, która zwraca sumę wszystkich wartości w określonej kolumnie . SUMA działa tylko na polach numerycznych . Wartości null są wykluczane z zwracanego wyniku.

Poniższa tabela przedstawia dane w tabeli płatności -

identyfikator_płaty numer_ członkostwa termin płatności opis opłata zapłacona numer_odniesienia_zewnętrznego
1 1 23-07-2012 Opłata za wypożyczenie filmu 2500 11
2 1 25-07-2012 Opłata za wypożyczenie filmu 2000 12
3 3 30-07-2012 Opłata za wypożyczenie filmu 6000 ZERO

Poniższe zapytanie pobiera wszystkie dokonane płatności i sumuje je, aby zwrócić jeden wynik.

SELECT SUM(`amount_paid`) FROM `payments`;

Wykonanie powyższego zapytania w środowisku roboczym MySQL na myflixdb daje następujące wyniki.

 
SUM('amount_paid')
10500

Funkcja AVG

Funkcja MySQL AVG zwraca średnią wartości w określonej kolumnie . Podobnie jak funkcja SUMA, działa tylko na liczbowych typach danych .

Załóżmy, że chcemy znaleźć średnią zapłaconą kwotę. Możemy użyć następującego zapytania -

SELECT AVG(`amount_paid`) FROM `payments`;

Wykonanie powyższego zapytania w środowisku MySQL daje nam następujące wyniki.

 
AVG('amount_paid')
3500

Podsumowanie

  • MySQL obsługuje wszystkie pięć (5) standardowych funkcji agregujących ISO LICZBA, SUMA, ŚREDNIA, MIN i MAKS.
  • Funkcje SUMA i ŚREDNIA działają tylko na danych liczbowych.
  • Jeśli chcesz wykluczyć zduplikowane wartości z wyników funkcji agregujących, użyj słowa kluczowego DISTINCT. Słowo kluczowe ALL obejmuje nawet duplikaty. Jeśli nic nie zostanie określone, jako domyślne przyjmuje się WSZYSTKIE.
  • Funkcje agregujące mogą być używane w połączeniu z innymi klauzulami SQL, takimi jak GROUP BY

Łamigłówka

Myślisz, że funkcje agregujące są łatwe. Spróbuj tego!

Poniższy przykład grupuje członków według nazwy, zlicza całkowitą liczbę płatności, średnią kwotę płatności i sumę całkowitą kwot płatności.

SELECT m.`full_names`,COUNT(p.`payment_id`) AS `paymentscount`,AVG(p.`amount_paid`) AS `averagepaymentamount`,SUM(p.`amount_paid`) AS `totalpayments` FROM members m, payments p WHERE m.`membership_number` = p.`membership_number` GROUP BY m.`full_names`;

Wykonanie powyższego przykładu w środowisku MySQL daje nam następujące wyniki.