![]() |
![]() |
![]() |
|
Как свернуть таблицу значений в коде, но получить не сумму, а максимум? | ☑ | ||
---|---|---|---|---|
0
Ildarovich
24.02.16
✎
14:40
|
Тема Как свернуть таблицу значений в коде, но получить не сумму, а максимум? b Метод таблицы значений Свернуть() вычисляет Суммы, а нужно вычислить и Максимум оказалось заархивированной, а я нашел решение. Оно в том, чтобы выполнить небольшую предварительную обработку таблицы значений, после которой обычная свертка даст нужный результат.
Дано.Сортировать("Поле1, Поле2");
Здесь Поле1, Поле2 - поля группировки, а Поле3 - поле поиска максимума.
Решение опубликовано здесь: http://catalog.mista.ru/public/460935/ . Там есть и другие варианты решения той же задачи. |
|||
1
Провинциальный 1сник
24.02.16
✎
14:41
|
Продолжайте наблюдение
|
|||
2
HawkEye
24.02.16
✎
14:44
|
(0) вариант отсортировать по полю и взять первое (или последнее) значение, я так понимаю не подходит?
|
|||
3
Aleksandr N
24.02.16
✎
14:45
|
(0) Как по мне, я бы сделал запросом.
|
|||
4
Fragster
гуру
24.02.16
✎
14:45
|
а теперь среднее!
|
|||
5
Garykom
гуру
24.02.16
✎
14:47
|
(0) чем то это напоминает обмен значений в двух переменных не использую 3-ю переменную
ЗЫ это плохой метод, медленный, другие быстрее |
|||
6
Записьдампа
24.02.16
✎
14:48
|
И нафига эти выкрутасы, если все равно перебирать все строки?
|
|||
7
Garykom
гуру
24.02.16
✎
14:53
|
(5)+ к примеру можно было просто по 3-м колонкам отсортировать и никаких вычислений и свернуть уже не нужно, максимум готовый в 1-й строчке при смене Поле1+Поле2 и лежит он в Поле3
ЗЫ но для некоторых случаев подобный метод после напильника может пригодиться и кстати часто подобное делал, но не называл это так громко )) |
|||
8
Fragster
гуру
24.02.16
✎
14:54
|
а нафига для каждых двух строк выбирать максимум, если достаточно отсортировать по "Поле1, Поле2, Поле3 Убыв" и при изменении поля1 и 2 либо добавлять эту строку в новую таблицу, либо выставлять флаг и обнулять все Поле3 в последующих строках с теми же значениями Поле1 и Поле2?
|
|||
9
Garykom
гуру
24.02.16
✎
14:55
|
(8) опоздал см (7)
|
|||
10
hhhh
24.02.16
✎
15:03
|
(7) сортировка на порядок медленнее перебора. Для ускорения ТЗ нужно будет проиндексировать по этому полю. Лучше перебрать.
|
|||
11
Garykom
гуру
24.02.16
✎
15:13
|
(10) а теперь внимание на строчку 1 в (0) !
|
|||
12
Ildarovich
24.02.16
✎
15:17
|
(7) это не универсальное решение. В отличие от него приведенное решение позволяет по схожей схеме находить минимум, первые, последние значения в группировках и делать это вместе с обычной сверткой оставшихся полей.
(4) если очень нужно, сделаю, но там букв больше будет - на минимализм не потянет. (10) в статье "Минимализмы2" по ссылке есть вариант с соответствием, ему сортировка не нужна. Там, правда, вариант для одного поля, но и несколько можно - еще две строчки. |
|||
13
Ildarovich
24.02.16
✎
22:33
|
(7)(8) Да, этот вариант еще короче, спасибо.
Дано.Сортировать("Поле1, Поле2, Поле3 Убыв");
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |