mysql: вывести по N строк из каждой группы

mysql: вывести по N строк из каждой группы


SELECT maker, model, type FROM
(
SELECT maker, model, type, RANK() OVER(PARTITION BY type ORDER BY model) num
FROM Product
) X
WHERE num <= 3


Решение на основе ранжирующих функций

Ранжирующие функции - ROW_NUMBER, RANK, DENSE_RANK и NTILE появились в составе SQL Server, начиная с версии 2005. Их появление в языке SQL было вызвано потребностью выполнять упорядоченные вычисления. Собственно, наше упражнение как раз и относится к этому классу задач. И теперь у нас есть возможность оценить данное приобретение. :

Для решения нашей задачи воспользуемся функцией RANK. Эта функция позволяет разбить все строки, возвращаемые запросом, на группы и вычислить ранг каждой строки в группе в соответствии заданной сортировкой. Поскольку мы будем сортировать по уникальному номеру модели, то ранг фактически будет совпадать с номером строки в группе. Итак, решение



подробнее http://www.sql-ex.ru/help/select16.php?Lang=0
Поделиться ссылкой:
ВКонтакт Facebook Одноклассники Twitter Mail.Ru

Также читают

Шпаргалка по командам MySQL
Отправить письмо с прикрепленными файлами | PHP mail with Attachment
DRY - Don’t repeat yourself - Не повторяйся

Возврат к списку