Pytanie 1
| ID_Pracownika | Nazwisko | Imię | Stanowisko | Wynagrodzenie |
|---|---|---|---|---|
| 1 | Kowalski | Krzysztof | kasjer | 3215,76 |
| 2 | Nowak | Antoni | kierownik | 5350,00 |
| 3 | Zając | Alicja | księgowy | 4568,70 |
| 4 | Król | Witold | kasjer | 3045,00 |
| 5 | Nowik | Grzegorz | kasjer | 2750,65 |
| 6 | Kotulski | Andrzej | kierowca | 3467,00 |
| 7 | Tutka | Katarzyna | kierownik | 4935,33 |
| 8 | Porada | Jakub | magazynier | 3321,56 |
Moim zdaniem warto zauważyć, że taka konstrukcja jest uniwersalna – w praktyce w firmach często liczy się średnie wynagrodzenia dla różnych stanowisk, działów, lokalizacji. Wtedy zmienia się tylko warunek w klauzuli WHERE. Można też pójść krok dalej i użyć GROUP BY, np. SELECT Stanowisko, AVG(Wynagrodzenie) FROM Pracownicy GROUP BY Stanowisko; żeby dostać średnie dla wszystkich stanowisk naraz, co jest wygodne np. w raportach HR. To, co masz w odpowiedzi, to w zasadzie „wersja jednostanowiskowa” takiego raportu.
Ważna dobra praktyka: zawsze filtrujemy w klauzuli WHERE, a nie próbujemy wpychać warunków do funkcji agregującej. Dzięki temu zapytanie jest czytelne, zgodne ze standardem SQL i dobrze optymalizowane przez silnik bazy. W realnych projektach staramy się też nadać alias wynikom agregacji, np. SELECT AVG(Wynagrodzenie) AS SredniaKasjera FROM Pracownicy WHERE Stanowisko='kasjer';, żeby w raportach i w kodzie aplikacji od razu było wiadomo, co oznacza zwracana kolumna.


