Sortowanie przed grupowaniem

Ostatnio męczyłem się z jednym zapytaniem, które miało pobrać specyficzne dane. Nie dość, że musiałem znaleźć rozwiązenie, jak najpierw posortować dane, a dopiero potem je pogrupować, to do tego sortowanie musiało się odbyć według określonych kryteriów. Przykładowe zapytanie wygląda tak:

SELECT *
FROM
(
SELECT *
FROM pracownicy
WHERE placa > 2000
ORDER BY FIELD(dzial, "ksiegowosc", "kierownictwo")
) AS zapytanie
GROUP BY zapytanie.pesel;

Wyjaśnienie: najpierw pobieram pracowników o płacy większej od 2000zł i sortuje ich według kryteriów (FIELD) – najpierw ci z księgowości, a potem z kierownictwa. Gdy już mam tak posortowane dane, to je grupuję.

Należy pamiętać o dodaniu aliasu (AS). Inaczej otrzymamy błąd!

Wiem, że ten przykład nie jest zbyt logiczny, bo nikt nie grupowałby po peselu, ale to tylko przykład, który miał pokazać jak to wykonać.

Mam nadzieję, że komuś się to przyda!

{ 0 komentarze… dodaj teraz swój }

Odpowiedź