Abfrage nach einer Reihe von Jahren

From: Gunnar Oehmichen <oehm8895(at)uni-landau(dot)de>
To: pgsql-de-allgemein(at)postgresql(dot)org
Subject: Abfrage nach einer Reihe von Jahren
Date: 2013-10-02 10:36:38
Message-ID: 524BF736.101@uni-landau.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

Einen schönen Guten Tag liebe Postgres-Liste,

folgende Tabelle (bzw der Übersicht halber nur ein paar Spalten).

samplenr, samplsite_id, land, date FROM mzb WHERE land = 'Niedersachsen'
LIMIT 10;

samplenr | samplsite_id | land | date
----------+--------------+---------------+------------
739301 | 607652 | Niedersachsen | 1998-09-24
515068 | 600708 | Niedersachsen | 2004-07-14
450866 | 602209 | Niedersachsen | 1988-07-07
472640 | 602324 | Niedersachsen | 1987-09-01
710011 | 603843 | Niedersachsen | 2007-09-15
682046 | 604267 | Niedersachsen | 1999-06-09
349092 | 604433 | Niedersachsen | 1986-10-01
641748 | 605520 | Niedersachsen | 1992-05-18
340837 | 607422 | Niedersachsen | 1989-09-12
616966 | 600421 | Niedersachsen | 1994-05-25
(10 rows)

land hat mehrere Einträge

Alle Samplesites wurden meist jährlich beprobt mit mehreren samplenr pro
date, aber die Tabelle enthält samplesites unterschiedlichster Zeiträume
(zB nur von 1982 bis 1984 beprobt).Ich möchte einen bestimmten Zeitraum
betrachten, sagen wir mal 1999-2002.

Zu erst einmal eine Abfrage, welche die Anzahl der samplsite_id, als
count(distinct (samplsite_id)), der Proben in allen Jahren dieses
Zeitraumes ausgibt.

SELECT
mzb.land,
count ( distinct (mzb.samplsite_id))
FROM
public.mzb
WHERE
EXTRACT (year from mzb.date) = 1999 AND
EXTRACT (year from mzb.date) = 2000 AND
EXTRACT (year from mzb.date) = 2001 AND
EXTRACT (year from mzb.date) = 2002
GROUP BY mzb.land;

land | count
------+-------
(0 rows)

Ich muss hier einen Fehler gemacht haben, da zum Beispiel folgende
Abfrage besagt (über weitere Abfragen rausgefunden), dass samplsite
800963 in den entsprechenden Jahren Einträge hat.

SELECT distinct ( EXTRACT (YEAR from date)) as Probejahr
from mzb where samplsite_id = 800963
Order by Probejahr;

bla
------
...
1997
1999
2000
2001
2002
2003
2004
(21 rows)

Die grundsätzliche Frage, wie kann ich nach samplsites_id filtern welche
in allen Jahren eines bestimmten Zeitraumes beprobt wurden?

Vielen Lieben Dank,

Gunnar
--
Gunnar Oehmichen
Quantitative Landscape Ecology
Institute for Environmental Sciences
University Koblenz-Landau
Fortstrasse 7
76829 Landau
Germany
http://www.uni-koblenz-landau.de/landau/fb7/umweltwissenschaften/landscape-ecology/Staff/gunnaroehmichen

Responses

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Andreas Gaab 2013-10-02 10:51:35 Re: Abfrage nach einer Reihe von Jahren
Previous Message Markus Wanner 2013-10-01 08:08:04 Re: Postcrash