how can I aggregate to distinct repeated fields?
Imagine this data:
WITH data as (
select '5a' as room_id, 'george' as name_student, 13 as age_student, 'Mr. Smith' as name_teacher, 43 as id_teacher
union all
select '5a' as room_id, 'george' as name_student, 13 as age_student, 'Mr. Climp' as name_teacher, 38 as id_teacher
union all
select '5a' as room_id, 'jane' as name_student, 14 as age_student , 'Mr. Smith' as name_teacher, 43 as id_teacher
union all
select '5a' as room_id, 'jane' as name_student, 14 as age_student, 'Mr. Climp' as name_teacher, 38 as id_teacher
)
I'd like to have the room id and two sets of repeated fields: students and teachers. But when I do the query below I get 4 and any try to plug in DISTINCT returns an error.
SELECT room_id,
struct(array_agg(name_student) as name, array_agg(age_student) as age) as students,
struct(array_agg(name_teacher) as name, array_agg(id_teacher) as id) as teachers,
from data
group by 1
How could I achieve unique arrays for students and fo teachers?
Thanks!
