2009-12-06 10 views
24

Ich versuche, den Durchschnitt der niedrigsten 5 Preis Elemente zu erhalten, gruppiert durch den Benutzernamen, der ihnen angehängt ist. Die folgende Abfrage gibt jedoch den Durchschnittspreis für jeden Benutzer an (was natürlich der Preis ist), aber ich möchte nur eine Antwort zurückgeben.Wählen Sie den Durchschnitt aus der MySQL-Tabelle mit LIMIT

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

Ich verstehe nicht, was Sie versuchen zu tun. Können Sie eine Beispieltabellenstruktur, einige Beispieldaten und das erwartete Ergebnis für diese Daten angeben? –

Antwort

55

Ich denke, das ist, was Sie nach:

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 

Es wird der Durchschnitt der fünf niedrigsten Preis angeboten werden - eine einzige Antwort.

+3

+1 Große Antwort. Und Gratulation zum Erreichen von 10k rep! –

+1

sehr nette Antwort! –

+3

Herzlichen Glückwunsch zum Erreichen von 160K + rep !! –

0

Einfache Lösung unten.

Abfrage:

SELECT AVG(Column_name) 
FROM (SELECT Column_name 
FROM Table 
WHERE ColumnID < number[Limit you want]) 
Verwandte Themen