Wpis z mikrobloga

#naukaprogramowania #bazydanych
uczę się #mariadb #sql
mam za zadanie wyświetlić nazwiska pracowników, których suma wypłat jest większa od pracownika o nazwisku 'misiura'

tabela z pracownikami łączy się po kluczu nrprac z tabelą z wypłatami.
Obecnie mam coś takiego:

SELECT nazwisko, SUM(kwota) FROM pracownicy
INNER JOIN wyplaty USING(nr
prac)
GROUP BY nazwisko
HAVING SUM(kwota) > ..........;

Da się w miejscu kropek wstawić jakoś warunek zarobków większych od misiury?
Jedyne co mi przychodzi do głowy, to zrobić całe kolejne podzapytanie, ale myślę czy nie będzie jakiejś szybszej opcji, bo wykonanie całego podzapytania wydaje się wolne, i pamięciożerne
  • 11
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

ale myślę czy nie będzie jakiejś szybszej opcji, bo wykonanie całego podzapytania wydaje się wolne, i pamięciożerne


@RedveKoronny: dobra dobra ty mi juz tu nie optymalizuj

pokaz dzialajcy swoj pomysl najpierw a nie mi tu optymalizujesz zerowania poprzez XOR na bramkach ( ͡° ͜ʖ ͡°)
  • Odpowiedz
@LazyInitializationException: jak dobrze rozumiem, do tego podzapytania jest wykonywane takie samo łączenie tabel jakie wykonałem wcześniej, czyli 2 razy robię tą samą operacje, która wydaje się być dosyć kosztowna, a jednocześnie samo zadanie które próbuję wykonać wydaje się tak "oczywistą operacją" że myślałem że jest na to wbudowane narzędzie, np jakiś dodatkowy warunek do funkcji SUM
  • Odpowiedz
@RedveKoronny: imho nie pisz joinów przy pomocy słowa using - nikt tak nie pisze w branży, bo lekko trudniej się czyta takie joiny

poza tym, nie grupuj po nazwisku - jeśli byś miał dwóch Kowalskich to ich wypłaty byłyby zsumowane :)
w przypadku Misiury musimy jednak założyć, że jest taki tylko jeden - inaczej trzeba by lekko zmodyfikować treść zadania

ja bym zrobił
  • Odpowiedz