Как выбрать топ значений в матрице

22.04.2021

Статья актуальна до версии 2022.1.

В FastReport.NET есть прекрасный инструмент для вывода данных в виде сводной таблицы, или матрицы. Многим бы хотелось расширить функциональность матриц, например, такой полезной опцией, как выбор топ N значений. Казалось бы, что проще, чем выбрать первые N строк из источника данных. Но помимо выборки из топ значений, нужно сгруппировать все остальные данные в одну запись и  в этом заключается главная сложность. Штатными средствами объекта Matrix это сделать невозможно. 

Поэтому нам нужно подготовить данные так, чтобы в них были, и топ значений, и сумма по всем остальным значениям. Этот способ подходит для SQL баз данных. Всё что нам нужно — написать SQL запрос.

Допустим мы выводим список зарплат сотрудников по годам. В редакторе источника данных вы можете использовать SQL запрос, если используется SQL база данных.

Мастер обработки данных

Вот как будет выглядеть SQL запрос, который выберет нам топ 2 значения и сумму по остальным:

SELECT top 2 name, year, month, salary FROM crosstest ORDER BY salary
UNION
SELECT 'Other' AS name, year, month, SUM(salary) FROM crosstest
WHERE name NOT IN (SELECT Top 2 name FROM crosstest ORDER BY salary)
GROUP BY name, year, month

Здесь мы объединили два запроса с помощью оператора union. В первом запросе выбираем топ значений, а во втором — сумму всех остальных значений.

В итоге получаем вот такую матрицу:

Итоговый результат

Как видите, применяя различные приемы подготовки исходных данных, мы можем добиться желаемого эффекта, даже если такая функциональность не предусмотрена в генераторе отчетов изначально.

25 мая 2022

Создание отчетов с PostgreSQL в приложении .NET 5 под Debian 10

Пример отчёта с кодом на основе библиотеки FastReport.Core с использованием SQL баз данных на операционной системе Debian 10.
11 мая 2022

Сложный отчёт с Advanced Matrix в FastReport .NET

Сравниваем скорость подготовки сложного отчёта с 3 обычными таблицами и при использовании объекта AdvancedMatrix.
23 марта 2022

Новые возможности и сравнения объектов Matrix и AdvancedMatrix

Пошаговая инструкция по использованию новой матрицы в вашем проекте с изменением структуры и функциональных особенностей.