viewof pres_aav = pres2022_t1_zonages
.derive({aav_cat: d => op.includes(['12', '13'], d.aav_cat)
? '11'
: d.aav_cat == '30'
? '20'
: d.aav_cat})
.derive({aav: d => d.aav_size + '-' + d.aav_cat})
.fold(aq.range(3,20), { as: ['type', 'voix'] })
.groupby('type', 'aav', 'aav_size', 'aav_cat')
.rollup({ voix: d => op.sum(d.voix) })
.groupby('type')
.derive({ total: aq.rolling(op.sum('voix'), [-Infinity, +Infinity]) })
.derive({ percent: d => d.voix / d.total * 100 })
.ungroup()
.params({groups})
.derive({ groups: (d,$) => op.recode(d.type, $.groups)})
.orderby('groups', aq.desc('aav_size'), 'aav_cat', aq.desc('voix'))
.view()