MySQL - funkcje agregujące

0

witam.

Mam taki problem.
Mam tabelę o nazwie "kontrahent", w której są m.in. następujące pola:

miasto - text, nazwa - text, limit_kupiecki - liczba

Muszę wydobyć z bazy kontrahentów, których limit kupiecki jest większy niś średni limit w danym mieście.

Teoretycznie zapytanie mogłoby wyglądać tak:

select nazwa, miasto, limit_kupiecki from kontrahent
where limit_kupiecki > 
(select miasto, avg(limit_kupiecki) from kontrahent group by miasto);

Ale pojawia się problem, że przecież nie można podzapytania skonstruować w ten sposób, żeby zwracało więcej niż jedno pole. Poza tym nawet jeśli dałoby się to rozgraniczyć to w podzapytaniu będzie kilka rekordów, a powinien być tylko jeden dla konkretnego kontrahenta...

Jestem w kropce i nie bardzo wiem co z tym zrobić. Próbowałem już przy użyciu klauzuli exists oraz having, ale jakoś zawsze się mijam z celem.

Jeśli ktoś miał podobny problem i udało mu się go rozwiązać to proszę o podpowiedź.

0

Możesz zrobić pytanie zagnieżdżone:

select 
  nazwa, 
  k.miasto, 
  k.limit_kupiecki 
from 
  kontrahent k,
  (select
    miasto,
    avg(limit_kupiecki)
   from
    kontrahent
   group by miasto) srednia
where
  k.miasto=srednia.miasto

1 użytkowników online, w tym zalogowanych: 0, gości: 1