Ich habe zwei Tabellen:Wie Gruppe durch ein Attribut und nach Datum geordnet
Medics
CREATE TABLE "medic" (
"id" BIGINT NOT NULL,
"name" CHARACTER VARYING(255) NOT NULL,
PRIMARY KEY ("id")
);
Kommentare
CREATE TABLE IF NOT EXISTS "comment" (
"id" BIGINT NOT NULL,
"medic_id" BIGINT NOT NULL,
"comment" CHARACTER VARYING(1024) NOT NULL,
"created_at" TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT now(),
CONSTRAINT pk_comment PRIMARY KEY (id),
CONSTRAINT fk_comment_medic FOREIGN KEY (medic_id)
REFERENCES medic(id) ON UPDATE NO ACTION ON DELETE NO ACTION
);
Jetzt möchte ich medic_id, name, comments_count
und alle ordered by created_at
hier bekommen, was ich bisher ausprobiert habe:
SELECT m.id, m.name, COUNT(c.id)
FROM COMMENT AS c
JOIN medic AS m ON m.id = c.medic_id
GROUP BY m.id, m.name, c.created_at
ORDER BY c.created_at DESC
Aber offensichtlich kann dies nicht funktionieren weil es keinen Sinn ergibt, nach Datum zu sortieren, obwohl ich es tun muss, wenn ich nach Datum bestellen möchte.
Eine weitere Appraach war mit Fensterfunktionen zu arbeiten. Insbesondere rank() over (partition by m.id order by c.created_at desc)
. Aber in diesem Fall verliere ich die Reihenfolge über alle Datensätze.
Hier sind einige SQLFiddle.
ich Postgres bin mit 9,3
Die Frage einer exemplarischen gewünschten Ausgangs klarer sein würde. – klin