2017-05-16 2 views
0

extrahiert habe ich eine ziemlich einfache Abfrage:GROUP BY und Bestellung von Datum, das als Zeitmarke

SELECT table.foo, array_agg([ARRAY[EXTRACT(epoch FROM table.date), table.bar]) AS array 
    FROM table 
GROUP BY table.foo, 
ORDER BY table.date ASC; 

Wenn ich diese Abfrage ausführen bekomme ich einen Fehler:

ERROR: column "table.date" must appear in the GROUP BY clause or be used in an aggregate function 

ich nicht ganz Verstehen Sie, warum das passiert, weil das Datum in der Aggregatfunktion erscheint. Gibt es eine Möglichkeit, diese Gruppierung zu erreichen?

Antwort

2

Sie kippt, um durch nicht Spalte vorhanden ist. Wenn Sie in die Aggregation bestellen Werte möchten, verwenden Sie:

SELECT table.foo, array_agg([ARRAY[EXTRACT(epoch FROM table.date), table.bar] ORDER BY table.date ASC) AS array 
    FROM table 
GROUP BY table.foo;