Hilfe beim Finden einer passenden Abfrage
Hi,
Ich suche eine Abfrage, die mir die letzten Eintr=C3=A4ge pro id liefert. D=
ie
Tabelle sieht so aus:
id date min max value
1 2011-03-25 20 30 17
3 2011-03-21 40 55 43
3 2011-03-23 40 55 52
2 2011-02-25 5 2
4 2011-03-15 74
4 2011-03-25 128
1 2011-03-22 20 30 24
Die folgende Abfrage
select id, max(date) from table group by id;
liefert genau die Zeilen, die ich m=C3=B6chte, allerdings fehlen die Spalte=
n min,
max und value. Wenn ich
select id, max(date), min, value, max from table group by id, min, value, m=
ax;
versuche, erhalte ich zuviele Zeilen.
Marco
--
Sent via pgsql-de-allgemein mailing list (pgsql-de-allgemein [at] postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-de-allgemein
Re: Hilfe beim Finden einer passenden Abfrage
Hallo Marco,
eine L=C3=B6sung :
Erstelle eine Abfrage mit einer temp. Tabelle mit einer Reihenfolge =C3=BC=
ber
die ID sortiert nach DATE desc.
--temp.Tabelle anlegen
with temp1 as ( SELECT id, date, min, max, "value" ,
--Reihenfolge ermitteln
row_number()over (partition by id order by date desc) AS rang
FROM tabelle
)
-- Neue Abfrage, einschr=C3=A4nken mit rang =3D 1
select id, date, min, max, "value" from temp1
where rang =3D 1
;
Ergebnis:
id date min max value
---------------------------------------------
1; "2011-03-25"; 20; 30; 17
2; "2011-02-25"; 5; ; 2
3; "2011-03-23"; 40; 55; 52
4; "2011-03-25"; ; ; 128
Gru=C3=9F
Albert
Am Freitag, den 25.03.2011, 15:15 +0100 schrieb Marco:
> Hi,
>
> Ich suche eine Abfrage, die mir die letzten Eintr=C3=A4ge pro id liefer=
t. Die
> Tabelle sieht so aus:
>
> id date min max value
> 1 2011-03-25 20 30 17
> 3 2011-03-21 40 55 43
> 3 2011-03-23 40 55 52
> 2 2011-02-25 5 2
> 4 2011-03-15 74
> 4 2011-03-25 128
> 1 2011-03-22 20 30 24
>
> Die folgende Abfrage
>
> select id, max(date) from table group by id;
>
> liefert genau die Zeilen, die ich m=C3=B6chte, allerdings fehlen die Sp=
alten min,
> max und value. Wenn ich
>
> select id, max(date), min, value, max from table group by id, min, valu=
e, max;
>
> versuche, erhalte ich zuviele Zeilen.
>
>
> Marco
>
>
>
--
Sent via pgsql-de-allgemein mailing list (pgsql-de-allgemein [at] postgresql.o=
rg)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-de-allgemein
Re: Hilfe beim Finden einer passenden Abfrage
On 2011-03-26 Albert Baumann <a.baumann [at] t-online.de> wrote:
> Hallo Marco,
>
> eine L=C3=B6sung :
>
> Erstelle eine Abfrage mit einer temp. Tabelle mit einer Reihenfolge =C3=
=BCber
> die ID sortiert nach DATE desc.
An eine tempor=C3=A4re Tabelle habe ich auch schon gedacht. Ich dachte, vie=
lleicht
gibt es eine einfache M=C3=B6glichkeit, eine einzelne pr=C3=A4gnante Abfrag=
e zu
erstellen.
Danke f=C3=BCr den Hinweis mit partition.
Marco
--
Sent via pgsql-de-allgemein mailing list (pgsql-de-allgemein [at] postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-de-allgemein
Re: Hilfe beim Finden einer passenden Abfrage
Am 27. M=C3=A4rz 2011 14:31 schrieb Marco <netuse [at] lavabit.com>:
> On 2011-03-26 Albert Baumann <a.baumann [at] t-online.de> wrote:
>
>> eine L=C3=B6sung :
>>
>> Erstelle eine Abfrage mit einer temp. Tabelle mit einer Reihenfolge =C3=
=BCber
>> die ID sortiert nach DATE desc.
>
> An eine tempor=C3=A4re Tabelle habe ich auch schon gedacht. Ich dachte, v=
ielleicht
> gibt es eine einfache M=C3=B6glichkeit, eine einzelne pr=C3=A4gnante Abfr=
age zu
> erstellen.
Alberts Beispiel *ist* eine einzelne Abfrage. Der Begriff =C2=BBtempor=C3=
=A4re
Tabelle=C2=AB wird hier m. E. ein bisschen fremd benutzt: es geht um ein
WITH-Query.
<URL:http://www.postgresql.org/docs/9.0/static/queries-with.html>
Man kann das gleiche auch mit einem schlichten Subquery anstatt von WITH ma=
chen:
SELECT id, date, min, max, value FROM (SELECT id, date, min, max,
value, row_number() OVER (PARTITION BY id ORDER BY date DESC) rn FROM
tabelle) t WHERE rn =3D 1;
Nicolas
--
Sent via pgsql-de-allgemein mailing list (pgsql-de-allgemein [at] postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-de-allgemein