• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

SQL - zapytanie

Object Storage Arubacloud
0 głosów
359 wizyt
pytanie zadane 9 listopada 2016 w SQL, bazy danych przez kowal20x7 Nowicjusz (180 p.)
edycja 10 listopada 2016 przez kowal20x7
Witam, potrzebuje pomocy z pewnym zapytaniem:
Numery kierowników (manager_id), których pracownicy zarabiają średnio ponad "jakaś kwota" oraz średnich wypłat wszystkich pracowników do nich przypisanych(do manager_id). Wiem, że na pewno z użyciem HAVING.
Dzięki.

1 odpowiedź

0 głosów
odpowiedź 10 listopada 2016 przez siof Gaduła (3,560 p.)
SELECT
    manager_id,
    AVG(wyplata)

FROM
    dane

GROUP BY
    manager_id

HAVING
    AVG(wyplata) > kwota

Coś podobnego do tego powyżej powinno zadziałać

komentarz 10 listopada 2016 przez kowal20x7 Nowicjusz (180 p.)
Tak, zadziała. Chodzi bardziej o druga część czyli "średnich wypłat wszystkich pracowników do nich przypisanych(do manager_id)" a nie tylko "pracownicy zarabiają średnio ponad "jakaś kwota".
komentarz 10 listopada 2016 przez siof Gaduła (3,560 p.)
Jest dodane w SELECT jako drugi parametr. Generalnie powyższe zapytanie powinno zwrócić id managera oraz średnią wypłat managerów których średnia wypłat jest większa od kwoty
komentarz 10 listopada 2016 przez kowal20x7 Nowicjusz (180 p.)
Potrzebuję wyświetlić średnią, która jest ponad daną kwotę (co jest już zrobione) oraz średnią OGÓLNĄ dla pracowników przypisanych do id kierownika.
komentarz 10 listopada 2016 przez siof Gaduła (3,560 p.)
Czyli powinno być dokładnie to co zwraca.

Zadanie mówi że należy wyświetlić:

manadżerów,

średnią wypłat

 

JEŚLI

średnia wypłat > kwota

 

czyli dokładnie to co podałem. Agregacja AVG z selecta jest tą samą wartością która idzie do HAVING.

Nie jestem pewien czy powyższe będzie zrozumiałe więc spróbuję jeszcze drugiego wyjaśnienia:

Jeśli z powyższego zapytania wyrzucilibyśmy HAVING to zwracałoby ono średnie wypłaty jakie były dla managerów (wszystkich). Dodanie warunku w HAVING spowodowało jedynie wyrzucenie tych managerów z wyniku którzy nie łapali się do warunku ale wartości sredniej wyplaty się nei zmieniły
komentarz 10 listopada 2016 przez kowal20x7 Nowicjusz (180 p.)
Mają być 2 kolumny ze średnią, w jednej średnia, która łapie się w warunku, a druga bez warunku, po prostu ze średnimi pracowników przypisanych do menadżerów.
komentarz 10 listopada 2016 przez siof Gaduła (3,560 p.)
SELECT
    dane.manager_id,
    srednie_dane.srednia_ogolna,
    AVG(dane.wyplata) AS srednia_wyplat_powyzej_sredniej

FROM
    dane
    JOIN 
    (
        SELECT
            manager_id,
            AVG(wyplata) AS srednia_ogolna
         
        FROM
            dane
         
        GROUP BY
            manager_id
        HAVING
            AVG(wyplata) > kwota
    ) AS srednie_dane ON srednie_dane.manager_id = dane.manager_id

WHERE
    dane.wyplata > kwota

GROUP BY
    dane.manager_id,
    srednie_dane.srednia_ogolna

Coś podobnego do tego powinno zadzialac. Mozliwe ze bedziesz musial dostosowac do swojego przypadku.

Podobne pytania

0 głosów
1 odpowiedź 244 wizyt
pytanie zadane 18 czerwca 2019 w SQL, bazy danych przez Maikel11 Początkujący (470 p.)
0 głosów
1 odpowiedź 571 wizyt
0 głosów
1 odpowiedź 163 wizyt
pytanie zadane 24 marca 2017 w SQL, bazy danych przez Marchiew Dyskutant (7,690 p.)

92,573 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...