Tak działa GROUP BY. Zajmuje kilka rzędów i zamienia je w jeden rząd. Z tego powodu musi wiedzieć, co zrobić ze wszystkimi połączonymi wierszami, w których występują różne wartości dla niektórych kolumn (pól). Dlatego masz dwie opcje dla każdego pola, które chcesz WYBRAĆ:albo uwzględnij je w klauzuli GROUP BY, albo użyj w funkcji agregującej, aby system wiedział, jak chcesz połączyć pole.
Załóżmy na przykład, że masz ten stół:
Name | OrderNumber
------------------
John | 1
John | 2
Jeśli powiesz GROUP BY Name, skąd będzie wiedzieć, który numer zamówienia ma być wyświetlany w wyniku? Więc albo dołączasz OrderNumber do grupy według, co spowoduje powstanie tych dwóch wierszy. Lub możesz użyć funkcji agregującej, aby pokazać, jak obsługiwać OrderNumbers. Na przykład MAX(OrderNumber)
, co oznacza, że wynikiem jest John | 2
lub SUM(OrderNumber)
co oznacza wynik John | 3
.