sql >> Database >  >> RDS >> PostgreSQL

Groeperen op gespecificeerde kolom in PostgreSQL

U zult moeten definiëren, hoe om waarden te groeperen die dezelfde category_id delen . Ze samenvoegen? Een som berekenen?

Als u door komma's gescheiden zoeklijsten wilt maken, kan uw verklaring er als volgt uitzien:

SELECT category_id
      ,string_agg(col1, ', ') AS col1_list
      ,string_agg(col2, ', ') AS col2_list
FROM   items
GROUP  BY category_id

Je hebt Postgres 9.0 of hoger nodig voor string_agg(col1, ', ') .In oudere versies kunt u vervangen door array_to_string(array_agg(col1), ', ') . Meer geaggregeerde functies hier .

Het aggregeren van waarden in PostgreSQL is de duidelijk superieure benadering in tegenstelling tot het aggregeren van waarden in de client. Postgres is erg snel en het vermindert (netwerk)verkeer.



  1. Wat is een RUIMTELIJKE INDEX en wanneer moet ik deze gebruiken?

  2. Hoe converteer je een interval zoals 1 dag 01:30:00 in 25:30:00?

  3. Hoe geef ik tekst in een leeg veld in een SQL-query weer?

  4. PostgreSQL 9.X bytea-weergave in 'hex' of 'escape' voor miniatuurafbeeldingen