139 votes

Ordre PostgreSQL array_agg

Tableau « animaux » :

 animal_name animal_type
Tom         Cat
Jerry       Mouse
Kermit      Frog

Mettre en doute:

 SELECT 
array_to_string(array_agg(animal_name),';') animal_names,
array_to_string(array_agg(animal_type),';') animal_types
FROM animals;

Résultat attendu:

 Tom;Jerry;Kerimt, Cat;Mouse;Frog
OR
Tom;Kerimt;Jerry, Cat;Frog;Mouse

Puis-je être sûr que l'ordre dans la première fonction d'agrégat sera toujours le même que dans la seconde. Je veux dire que je n'aimerais pas obtenir :

 Tom;Jerry;Kermit, Frog;Mouse,Cat

418voto

Frank Heikens Points 29270

Utilisez un ORDER BY, comme cet exemple du manuel :

 SELECT array_agg(a ORDER BY b DESC) FROM table;

1voto

Sikh Points 1

Faites ceci :

 SELECT 
    array_to_string(array_agg(animal_name order by animal_name),';') animal_names,
    array_to_string(array_agg(animal_type order by animal_type),';') animal_types
FROM 
    animals;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X