FirstSortedValue — функция диаграммы

Функция FirstSortedValue() возвращает значение из выражения, указанного в элементе value, связанном с результатом сортировки аргумента sort_weight, учитывая элемент rank, если он указан. Если в результате больше одного значения имеют один и тот же элемент sort_weight для указанного элемента rank, функция возвращает значение NULL.

Синтаксис:  

FirstSortedValue([{SetExpression}] [DISTINCT] [TOTAL [<fld {,fld}>]] value, sort_weight [,rank])

Тип возвращаемого значения: dual

Аргументы:  

Аргумент Описание
value Поле вывода. С помощью функции можно найти значение выражения value, которое соответствует результату сортировки поля sort_weight.
sort_weight

Поле ввода. Выражение, содержащее данные для сортировки. Обнаружено первое (нижнее) значение элемента sort_weight, на основе которого определяется соответствующее значение выражения value. Если указать знак минуса перед элементом sort_weight, функция вернет последнее (самое высокое) отсортированное значение.

rank

При указании для элемента rank значения «n» выше 1 будет получено n-ое отсортированное значение.

SetExpression По умолчанию функция агрегирования агрегирует множество возможных записей, определенных выборкой. Альтернативный набор записей может быть определен набором выражений анализа.
DISTINCT Если слово DISTINCT указывается до аргументов функции, все дубликаты, возникшие в результате оценки аргументов функции, будут проигнорированы.
TOTAL

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

После префикса TOTAL может быть указан список, включающий одно или несколько имен полей в угловых скобках <fld>. Эти имена полей должны быть поднабором переменных измерений диаграммы.

См.: Определение объема агрегирования

Примеры и результаты:  

Customer Product UnitSales UnitPrice
Astrida AA 4 16
Astrida AA 10 15
Astrida BB 9 9
Betacab BB 5 10
Betacab CC 2 20
Betacab DD - 25
Canutility AA 8 15
Canutility CC - 19
Пример Результат
firstsortedvalue (Product, UnitPrice)

Элемент BB, который является элементом Productс наименьшим значением UnitPrice(9).

firstsortedvalue (Product, UnitPrice, 2)

Элемент BB, который является элементом Product со вторым наименьшим значением UnitPrice(10).

firstsortedvalue (Customer, -UnitPrice, 2)

Элемент Betacab, который является Customer с Product со вторым наибольшим значением UnitPrice(20).

firstsortedvalue (Customer, UnitPrice, 3)

Значение NULL, поскольку существуют два значения элемента Customer (Astrida и Canutility) с одинаковым значениемrank (третьим наименьшим) UnitPrice(15).

Используйте префикс distinct, чтобы избежать непредвиденного появления значений NULL.

firstsortedvalue (Customer, -UnitPrice*UnitSales, 2)

Значение Canutility, которое является элементом Customer со вторым наибольшим значением порядка продажи UnitPrice, умноженным на элемент UnitSales (120).

Данные, используемые в примерах:

ProductData:

LOAD * inline [

Customer|Product|UnitSales|UnitPrice

Astrida|AA|4|16

Astrida|AA|10|15

Astrida|BB|9|9

Betacab|BB|5|10

Betacab|CC|2|20

Betacab|DD||25

Canutility|AA|8|15

Canutility|CC||19

] (delimiter is '|');