2009-12-06 32 views
24

Próbuję uzyskać średnią z najniższych 5 wycenionych pozycji pogrupowanych według nazwy użytkownika. Jednak poniższe zapytanie podaje średnią cenę dla każdego użytkownika (która oczywiście jest ceną), ale chcę tylko zwrócić jedną odpowiedź.Wybierz średnią z tabeli MySQL z LIMITem

SELECT AVG(price) 
    FROM table 
WHERE price > '0' && item_id = '$id' 
GROUP BY username 
ORDER BY price ASC 
    LIMIT 5 
+1

Nie rozumiem co próbujesz zrobić. Czy możesz podać przykładową strukturę tabeli, niektóre przykładowe dane i oczekiwany wynik dla tych danych? –

Odpowiedz

55

myślę, że to jest to, co jesteś po:

SELECT AVG(items.price) 
    FROM (SELECT t.price 
      FROM TABLE t 
     WHERE t.price > '0' 
      AND t.item_id = '$id' 
     ORDER BY t.price 
     LIMIT 5) items 

Powróci średnią z 5 najniższych cenach - jedną odpowiedź.

+3

+1 Świetna odpowiedź. I gratulacje po osiągnięciu 10 tys. Powt. –

+1

bardzo ładna odpowiedź! –

+3

Gratulujemy osiągnięcia 160 tys. Powtórzeń !! –

0

Proste rozwiązanie poniżej.

Zapytanie:

SELECT AVG(Column_name) 
FROM (SELECT Column_name 
FROM Table 
WHERE ColumnID < number[Limit you want]) 
Powiązane problemy