31576 skanuj0306 (3)

31576 skanuj0306 (3)



320 PHP i MySQL dla każdego

Warunki grupowania

Zapytanie grupujące dane może również zawierać dodatkowe warunki grupowania. Umożliwia to dodatkowa klauzula HAVING. Zapytanie takie ma ogólną postać:

SELECT kolumnall. kolumna2.....kolumnaN']

FROM tabel alt. tabel a2.....tabelaN]

WHERE warunkijdiere

GROUP BY kolumnalt. kolumna2.....kolumnaN]

HAYING warunki_having

gdzie warunki_having określają warunki grupowania. Przykładowo, gdybyśmy chcieli uzyskać dane o klientach, którzy złożyli sumaryczne zamówienia o wartości większej od 30 zł, należałoby zastosować klauzulę HAVING w postaci:

HAVING SUM(Wartosc) > 30: a cała instrukcja SELECT miałaby postać:

SELECT Klientld. SUM(Wartosc) AS 'Wartość Zamówień'

FROM Zamówienia GROUP BY Klientld HAVING SUM(Wartosc) > 30:

Efekt jej działania został przedstawiony na rysunku 11.14.

Rysunek 11.14.

Efekt działania zapytania wykorzystującego dodatkowy warunek grupowania


mysql> SELECT Klientld, SUM(Wartosc) AS 'Wartość Zamówień' -> FROM Zamówienia -> GROUP BY Klientld -> HAYING SUM(Wartość) > 30:

I Klientld I Wartość Zamówień |

38.54 | 46.98 I 30.92 |

Możemy też skonstruować bardziej skomplikowane zapytanie. Dowiedzmy się, jaka była średnia wartość zamówień towarów o identyfikatorach 1, 3 i 5 (z podziałem na poszczególnych klientów), takich że sumaryczna wartość tych zamówień dla danego klienta była równa co najmniej 10 zł. W tym celu musimy wykonać zapytanie:

SELECT KLientld. Towarld. AVG(Wartosc) AS AVG

FROM Zamówienia

WHERE Towarld IN (1. 3. 5)

GROUP BY Klientld HAVING SUM(Wartosc) >- 10:

którego efekt działania został przedstawiony na rysunku 11.15.

Funkcje agregujące w złączeniach

Wymienione w tabeli 6.1 funkcje agregujące, jak i klauzule GROUP BY i HAVING, mogą być również używane w złączeniach tabel. W przykładach z poprzednie sekcji korzystaliśmy tylko z jednej tabeli, otrzymując w wyniku zapytań jedynie identyfikatory klientów


Wyszukiwarka

Podobne podstrony:
skanuj0361 (3) 376 PHP i MySQL dla każdego else{ echo("Niepoprawne dane!"): } <br> &
skanuj0361 (3) 376 PHP i MySQL dla każdego else{ echo("Niepoprawne dane!"): } <br> &
skanuj0431 448 PHP i MySQL dla każdego Wiadomości będą przechowywane w tabeli o nazwie News, zawiera
skanuj0161 (9) 172 PHP i MySQL dla każdego Zwraca ona ciąg strl, z którego począwszy od znaku o inde
skanuj0163 (9) 174 PHP i MySQL dla każdego Listing 6.12. Wykorzystanie funkcji strtok <?php $str

więcej podobnych podstron