Hola tengo dos mesas
Student
--------
Id Name
1 John
2 David
3 Will
Grade
---------
Student_id Mark
1 A
2 B
2 B+
3 C
3 A
¿Es posible hacer que Postgresql nativo seleccione para obtener resultados como este:
Name Array of marks
-----------------------
'John', {'A'}
'David', {'B','B+'}
'Will', {'C','A'}
Pero no asi
Name Mark
----------------
'John', 'A'
'David', 'B'
'David', 'B+'
'Will', 'C'
'Will', 'A'
sql
arrays
postgresql
Eazy
fuente
fuente
Lo que entiendo es que puedes hacer algo como esto:
EDITAR
No estoy seguro. Pero tal vez algo como esto entonces:
Referencia aquí
fuente
Puedes usar lo siguiente:
Como se describe aquí: http://www.mkyong.com/database/convert-subquery-result-to-array/
fuente
@Michael Buen lo hizo bien. Obtuve lo que necesitaba usando array_agg.
Aquí solo un ejemplo de consulta básica en caso de que ayude a alguien:
SELECT directory, ARRAY_AGG(file_name) FROM table WHERE type = 'ZIP' GROUP BY directory;
Y el resultado fue 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} |
Esta publicación también me ayudó mucho: "Agrupar por" en SQL y Python Pandas . Básicamente dice que es más conveniente usar solo SQL cuando sea posible, pero que Python Pandas puede ser útil para lograr funcionalidades extra en el proceso de filtrado.
Espero que ayude
fuente