Выберите среднее из таблицы MySQL с LIMIT

Я пытаюсь получить среднее значение 5 предметов с самой низкой ценой, сгруппированных по прикрепленному к ним имени пользователя. Однако приведенный ниже запрос дает среднюю цену для каждого пользователя (что, конечно же, является ценой), но я просто хочу вернуть один ответ.

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

person James Simpson    schedule 06.12.2009    source источник
comment
Я не понимаю, что ты пытаешься сделать. Можете ли вы привести пример структуры таблицы, некоторые примеры данных и ожидаемый результат для этих данных?   -  person Mark Byers    schedule 06.12.2009


Ответы (2)


Я думаю, это то, что вам нужно:

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

Он вернет среднее значение 5 самых низких цен — один ответ.

person OMG Ponies    schedule 06.12.2009
comment
Поздравляем с достижением 160K+ репутации!! - person Joshua Pinter; 11.05.2015
comment
Поздравляем с достижением 201k+ повторений! - person angus; 16.11.2016
comment
Поздравляем с достижением 224k+ повторений! - person Infated; 27.09.2017
comment
Поздравляем с достижением 265k+ повторений! - person consigliere; 19.06.2019
comment
Поздравляем с достижением 300k+ повторений! - person John T; 22.05.2021

Простое решение ниже.

Запрос:

SELECT  AVG(Column_name) 
FROM  (SELECT Column_name 
FROM  Table
WHERE  ColumnID < number[Limit you want] )
person Aman Dhadwal    schedule 20.12.2017
comment
MySQL сказал: Документация № 1248 - Каждая производная таблица должна иметь свой собственный псевдоним. - person John T; 22.05.2021