GROUP BY to polecenie w języku SQL, które służy do grupowania wyników zapytania według jednego lub kilku kryteriów. Po wykonaniu GROUP BY, wyniki zapytania są pogrupowane w odpowiedniej kolejności, zgodnie z podanymi kryteriami, a następnie wyświetlane.
Działanie GROUP BY polega na podziale wyników zapytania na grupy na podstawie wartości określonych kolumn. Na przykład, jeśli masz tabelę transakcji i chcesz wyświetlić sumę sprzedaży dla każdego pracownika w danym okresie, możesz zastosować GROUP BY na kolumnie pracownika, aby podzielić wyniki zapytania na grupy na podstawie pracowników.
Więc... generalizując:
Oba zapytania mają za zadanie obliczenie średniej ilości zamówień na klienta, tylko wykorzystują nieco inne podejścia i zwracają różne wyniki. Pierwsze zapytanie jest bardziej precyzyjne i wydajne, oblicza średnią ilość zamówień dla każdego klienta osobno, a następnie grupuje wyniki po identyfikatorze klienta i zamówieniu.
W taki sposób to zapisując u w każdym wierszu wynikowym będziesz miał informację o identyfikatorze klienta, zamówieniu oraz średniej ilości zamówień na tego klienta.
Drugi zapis korzysta z podzapytania w celu obliczenia jednej średniej dla całej tabeli order i przypisuje ją do każdego wiersza wynikowego, w którym znajdują się informacje o identyfikatorze klienta i zamówieniu. W tym przypadku, każdy wiersz wynikowy będzie miał tę samą wartość średniej, niezależnie od identyfikatora klienta czy zamówienia.
Dlatego odp jest taka, że , jeśli chcesz uzyskać średnią ilość zamówień na każdego klienta, powinieneś wybrać pierwsze zapytanie.
W przeciwnym wypadku - jeśli jednak potrzebujesz jednej średniej dla całej tabeli order, to drugie zapytanie będzie bardziej odpowiednie.