Tut mir leid, ich bin nur versäumt, die seitliche Join!PostgreSQL LATERAL JOIN zu LIMIT GROUP BY
bekam ich eine Tabelle wie folgt aus:
ID | NUMBER | VALUE
-------------------
20 | 12 | 0.7
21 | 12 | 0.8
22 | 13 | 0.8
23 | 13 | 0.7
24 | 13 | 0.9
25 | Null | 0.9
Nun möchte Ich mag die ersten 2 Zeilen für jede Zahl nach abnehmender Reihenfolge der VALUE sortiert bekommen.
ID | NUMBER | VALUE
-------------------
21 | 12 | 0.8
20 | 12 | 0.7
24 | 13 | 0.9
22 | 13 | 0.8
Der Code habe ich versucht, so sieht weit wie folgt aus: (Gefunden: Grouped LIMIT in PostgreSQL: show the first N rows for each group?)
SELECT DISTINCT t_outer.id, t_top.number, t_top.value
FROM table t_outer
JOIN LATERAL (
SELECT * FROM table t_inner
WHERE t_inner.number NOTNULL
AND t_inner.id = t_outer.id
AND t_inner.number = t_outer.number
ORDER BY t_inner.value DESC
LIMIT 2
) t_top ON TRUE
order by t_outer.value DESC;
Alles ist so weit in Ordnung, es scheint nur, wie der LIMIT 2 funktioniert nicht. Ich bekomme alle Zeilen für alle NUMBER-Elemente zurück.
Danke! Das funktioniert. – BenWhite