@devid2323
Junior PHP Developer

Как написать запрос на виборку последних десяти елементов из каждой группы?

Таблица:
CREATE TABLE `sales` (
  `id` bigint(20) NOT NULL,
  `title` varchar(255) NOT NULL,
  `price` decimal(10,2) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL
)

Поле title может иметь одинаковые значения.
Такой вот запрос у меня хватило мозгов написать
select avg(price), `title` from `sales` group by `title`

Но нужно сгруппировать не всё что есть в таблице, а только последние 10 продаж в каждой группе.
  • Вопрос задан
  • 85 просмотров
Решения вопроса 2
Ответ вы найдёте в этой статье www.sql-ex.ru/help/select16.php?Lang=0
Ответ написан
@profaller
Как-то так

SELECT
  title,
  AVG(price) price
FROM (
       SELECT
         t1.*
       FROM
         sales t1

         LEFT JOIN sales t2 ON t1.id >= t2.id AND t1.title = t2.title

       GROUP BY t1.title, t1.id
       HAVING COUNT(*) <= 10

     ) tm

GROUP BY title
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы