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

Популярное

Шпаргалка по командам MySQL
Проверка ИНН по контрольной сумме PHP/JavaScript
PHP, округление до 10 или 100 в большую или меньшую сторону

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