Оригинал на GitHub
Вопрос
Есть таблица. В ней 2 колонки — одна Тип, вторая Число. Там где Тип — есть повторяющиеся значения. Т.е. к каждому Типу есть несколько строк.
Нам нужно получить rowList в котором также две колонки, но значения в колонке с Типами теперь уникальные, а в колонке с Числами все просуммировано по Типу.
Ответ
Есть много способов, один из них — это взять rowList и провести над ним действия:
Взять колонку с Типом и сделать из нее уникальные
Создать из списка уникальных rowList
Пройтись по этому новому rowList
фильтруя строки из первого rowList
и суммируя значения
=: listReplace(list: $rowlistcreate; action: "sum" = $sum; value: "value")
rowlistcreate: rowListCreate(field: "type" = $uniq)
uniq: listUniq(list: $rowlist[[type]])
~rowlist: selectRowList(table: $#ntn; field: 'type'; field: 'sum')
sum: listSum(list: $filter[[sum]])
filter: listFilter(list: $rowlist; key: "type" = $#value[type])
Получим:
[
{
"type": 1,
"sum": 40
},
{
"type": 2,
"sum": 35
},
{
"type": 3,
"sum": 13
}
]