Mam kilka pytań odnośnie GROUP BY i Podzapytań.
- Dajmy na to, że mam pracownika, który ma pola: imie, nazwisko, wiek, adres_zamieszkania.
Jest on połączony z innymi tabelami zwykłymi JOINami w tym do np. faktury. Ilość faktur wyznacza ilość sprzedanych rzeczy przez tego pracownika. Dajmy na to, że chce wypisać pracowników, którzy sprzedali ponad średnią normę, tzn sprzedali więcej niż średnia faktur.
SELECT imie, nazwisko, wiek, adres_zamieszkania, count(id_faktura)
FROM faktura JOIN pracownik USING(id_pracownik)
HAVING count(id_faktura) > avg(id_faktura)
GROUP BY...
No właśnie. Jeśli chciałbym użyć tutaj GROUP BY musiałbym podać wszystkie pozycje z selectu tj imie, nazwisko, wiek, adres_zamieszkania bo inaczej wywala mi no-group group... Tyle, że nie moge grupować przez tyle rzeczy. Jak zliczyć liczbę faktur inaczej niż count i group by albo czy da się jakoś uprościć tego group by ?
- Jak "wyciągnąć" to co chce z podzapytania np :
SELECT imie, nazwisko, l_faktura
FROM pracownik, faktura,
(
SELECT count(id_faktura) l_faktura FROM faktura
)WHERE pracownik.id_pracownik = faktura.id_faktura;
Niestety powyższy kod daje mi iloczyn kartezjański (podwaja mi wyniki).