Rozdział 11. ♦ Więcej o SQL 319
SELECT Klientld. MIN(Wartosc) AS MIN. MAX(Wartosc) AS MAX FROM Zamówienia
WHERE Data BETWEEN '2005-01-01' AND '2005-03-31'
GROUP BY Klientld:
której efekt działania został przedstawiony na rysunku 11.12.
Rysunek 11.12.
Maksymalna i minimalna wartość zamówień między styczniem i marcem 2005 r.
mysql> SELECT Klientld, MlN(Wartosc) AS MIN, MAx(Wartosc) AS MAX -> FROM Zamówienia
-> WHERE Data BETWEEN ‘2005-01-01’ AND '2005-03-31'
-> GROUP BY Klientld:
I Klientld | MIN
10.22
2.28
12.44
15.26
6.11
Grupowanie może się również odbywać względem innych kolumn niż Klientld. Gdybyśmy chcieli się dowiedzieć, jaka jest suma zamówień poszczególnych towarów, zastosowalibyśmy instrukcję:
SELECT Towarld, Sum(Wartosc) AS Suma FROM Zamówienia GROUP BY Towarld:
Istnieje również możliwość grupowania względem większej liczby kolumn. Gdyby interesowało nas, ile razy dany klient zamawiał dany towar, i jaka była średnia wartość zamówienia danego towaru przez danego klienta, zastosowalibyśmy grupowanie względem kolumn KI ientld i Towarld, a zapytanie miałoby postać:
SELECT Klientld. Towarld. AVG(Wartosc) AS 'Średnia Wartość’.
C0UNT(*) AS 'Liczba Zamówień'
FROM Zamówienia
GROUP BY Klientld, Towarld;
Efekt jego działania jest przedstawiony na rysunku 11.13. Widać wyraźnie, że np. klient o identyfikatorze 1 zamawiał dwukrotnie towar o identyfikatorze 2, a średnia wartość tych zamówień wyniosła 14,16. Podobnie klient o identyfikatorze 2 zamawiał towar o identyfikatorze 1 również dwukrotnie, a średnia wartość tych zamówień wyniosła 22,35.
Rysunek 11.13.
Efekt grupowania względem dwóch kolumn
mysql> SELECT Klientld, Towarld, AVG(Wartosc) AS 'Średnia Wartość', -> COUNTC*) AS 'Liczba Zamówień'
-> FROM Zamówienia
-> GROUP BY Klientld, Towarld;
I Klientld | Towarld | Średnia Wartość
14.160000
10.220000
22.350000
2.280000
18.480000
12.440000
15.260000
6.110000
8 rows in set (0.00 sec)