Oi eu tenho duas mesas
Student
--------
Id Name
1 John
2 David
3 Will
Grade
---------
Student_id Mark
1 A
2 B
2 B+
3 C
3 A
É possível fazer com que o Postgresql nativo selecione para obter resultados como este:
Name Array of marks
-----------------------
'John', {'A'}
'David', {'B','B+'}
'Will', {'C','A'}
Mas não assim
Name Mark
----------------
'John', 'A'
'David', 'B'
'David', 'B+'
'Will', 'C'
'Will', 'A'
sql
arrays
postgresql
facil
fonte
fonte
Pelo que entendi, você pode fazer algo assim:
EDITAR
Não tenho certeza. Mas talvez algo assim então:
Referência aqui
fonte
Você pode usar o seguinte:
Conforme descrito aqui: http://www.mkyong.com/database/convert-subquery-result-to-array/
fonte
@Michael Buen acertou. Consegui o que precisava usando array_agg.
Aqui está apenas um exemplo de consulta básica, caso ajude alguém:
SELECT directory, ARRAY_AGG(file_name) FROM table WHERE type = 'ZIP' GROUP BY directory;
E o resultado foi algo como:
parent_directory | array_agg | ------------------------+----------------------------------------+ /home/postgresql/files | {zip_1.zip,zip_2.zip,zip_3.zip} | /home/postgresql/files2 | {file1.zip,file2.zip} |
Esse post também me ajudou muito: "Agrupar por" em SQL e Python Pandas . Basicamente, ele diz que é mais conveniente usar apenas SQL quando possível, mas que Python Pandas pode ser útil para obter funcionalidades extras no processo de filtragem.
Espero que ajude
fonte