groupby

<lst>:groupby(key)

<lst>:groupby(foo(item, pos))

Raggruppa gli elementi della lista. Ritorna un dizionario che ha come chiave i valori della key e come valore i risultati del raggruppamento. Nel secondo caso la funzione 'foo' deve ritornare la chiave di raggruppamento.

Esempio 220. Esempio groupby

local orders = {
  {id=1, product="Computer", price=1000, year=2010},
  {id=1, product="Book",     price=50,   year=2012},
  {id=3, product="TV",       price=800,  year=2011},
  {id=4, product="Manga",    price=5,    year=2010},
  ...  
}  
-- ritorna i tre anni piĆ¹ remunerativi      
local a = XTable(orders)
      :groupby("year")      -- [*]
      :select2(function(k, v) return {year=k, totalprice=XTable(v):sum('price')} end)
      :orderbyascending('totalprice')
      :take(3)
      :astable()
--[*]
--> {['2010'] = {{id=1, product="Computer", price=1000, year=2010},
                 {id=4, product="Manga",    price=5,    year=2010}},
     ['2011'] = {{id=3, product="TV",       price=800,  year=2011}},
     ['2012'] = {{id=1, product="Book",     price=50,   year=2012}},
    }