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

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


freelanceland
Ищете фрилансера для выполнения задач?
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

Также читают

mysqldump, бекап, database, db, бд, explain
Аналогичная функция Excel ОКРУГЛТ() на PHP
Loger - класс логирования на PHP

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