2017-01-23 4 views
0

Ich ziehe von mysql um, wo ich einfach eine einfache Group By zu Postgres machen könnte. Ich möchte im Wesentlichen Datensätze nach Monat und Jahr gruppieren, zum Beispiel würde ich nur einen Datensatz für Januar 2016, einen für Februar 2016 usw. erhalten.Postgres Distinct statt Group Von

Ich habe die Abfrage in Postgres arbeiten, aber ich bin mir nicht sicher, ob dies am meisten ist Wirklich, es sieht einfach so aus, als müsste es etwas Besseres geben. Ich musste ein Distinct auf einer Kombination der Jahres- und Monatsspalten ausführen. Jahres- und Monatsspalten sind ganze Zahlen.

SELECT distinct on (year::text || month::text) id, name, type, month, year 
FROM records 
WHERE type = 44 
ORDER BY year::text || month::text DESC, year, month 
LIMIT 12 
+2

Pg auch "durch einfache Gruppe" Abfragen tun können. Teilen Sie Ihre ursprüngliche Arbeitsabfrage von mysql. Wenn es nicht die SQL-Standards verletzt, sollte es sehr einfach sein, in Pgs SQL-Stil zu übersetzen. – alzee

Antwort

0

Sie die Verkettung nicht brauchen:

select distinct on (year, month) 
    id, name, type, month, year 
from records 
where type = 44 
order by year desc, month desc 
limit 12 
+0

Danke, das ist viel sauberer – Columbus