I don't think there is a 'native' way of achieving this. If your datasource is an SQL query which you may edit yourself, pre-calculating the AVG subtotals and adding them to the resultset will certainly work. Query based on your example dataset: SELECT summary.*, detail.myscoreFROM(SELECT myset, AVG(myscore) AS avg_scoreFROM ( SELECT 'Set_1' AS myset, 90 AS myscore FROM dual UNION ALL SELECT 'Set_1' AS myset, 80 AS myscore FROM dual UNION ALL SELECT 'Set_1' AS myset, 90 AS myscore FROM dual UNION ALL SELECT 'Set_2' AS myset, 75 AS myscore FROM dual UNION ALL SELECT 'Set_2' AS myset, 90 AS myscore FROM dual UNION ALL SELECT 'Set_2' AS myset, 20 AS myscore FROM dual UNION ALL SELECT 'Set_2' AS myset, 90 AS myscore FROM dual UNION ALL SELECT 'Set_2' AS myset, 95 AS myscore FROM dual UNION ALL SELECT 'Set_2' AS myset, 80 AS myscore FROM dual ) aliasGROUP BY myset) summary left join ( SELECT 'Set_1' AS myset, 90 AS myscore FROM dual UNION ALL SELECT 'Set_1' AS myset, 80 AS myscore FROM dual UNION ALL SELECT 'Set_1' AS myset, 90 AS myscore FROM dual UNION ALL SELECT 'Set_2' AS myset, 75 AS myscore FROM dual UNION ALL SELECT 'Set_2' AS myset, 90 AS myscore FROM dual UNION ALL SELECT 'Set_2' AS myset, 20 AS myscore FROM dual UNION ALL SELECT 'Set_2' AS myset, 90 AS myscore FROM dual UNION ALL SELECT 'Set_2' AS myset, 95 AS myscore FROM dual UNION ALL SELECT 'Set_2' AS myset, 80 AS myscore FROM dual ) detail ON summary.myset = detail.myset[/code]