add view::group_by and tests