SELECT avg(milliseconds) FROM track;
currently compiles into:
(temp-group-by :source_id 1
(scan `track` :source_id 0
(yield
(column-field :source_id 0 :column_offset 0)
(column-field :source_id 0 :column_offset 1)
(column-field :source_id 0 :column_offset 2)
(column-field :source_id 0 :column_offset 3)
(column-field :source_id 0 :column_offset 4)
(column-field :source_id 0 :column_offset 5)
(column-field :source_id 0 :column_offset 6)
(column-field :source_id 0 :column_offset 7)
(column-field :source_id 0 :column_offset 8)))
(group-by-values)
(yield
(avg :source_id 1
(column-field :source_id 1 :column_offset 6))))
The temp-group-by creates a redundant temporary group, when simply using the table's group could suffice. This could be done with a new scan-group function or similar.
(scan-group `track` :source_id 0
(yield
(avg :source_id 0
(column-field :source_id 0 :column_offset 6))))