Zeilen Filtern in denen eine bestimmte Kombination nicht vorkommt

Hannes

Benutzer
Beiträge
12
Hallo,
vermutlich ist das Problem trivial, aber ich bekomme den Knoten in meinem Hirn gerade nicht gelöst:

Ich habe in verschiedenen Orten jeweils zwei Versuchsaufbauten, mit denen jeweils nur bestimmte Organismen gemessen werden.

Ich möchte Orte herausfiltern, bei denen entweder keine Organismen in Versuchsaufbau A oder aber keine Organismen in Versuchsaufbau B gemessen wurden.
In der Tabelle sind nur Messungen enthalten, aber keine NULL-Werte, falls es eine Kombi Versuchsaufbau & organismen nicht gab.
In Excel könnte ich mir die fehlenden Werte über eine Pivot-Tabelle anzeigen lassen.

Table:
ort, versuchsaufbau, organismen

Mögliche Kombinationen zwischen Versuchsaufbau & Organismen
versuchsaufbau, organismen
A, a
A, b
B, c
B, d
B, e
 
Werbung:
Nicht ganz klar, was Du meinst. Deine 5 Kombinationen, ist das für einen Ort oder für 2 oder 5? Und was soll rauskommen?
Die Kombination soll für jeden Ort geprüft werden.
Gibt es A,a und A,b, aber für B nichts, dann soll der Ort aussortiert werden.
Also die Aussortierung eines Ortes soll erfolgen:
a) wenn es sowohl bei A und B keine Werte gibt.
b) wenn in einem der beiden Versuche keine Werte gibt

Es müssen bei jedem Versuch (A und B) mindest ein Organismus gemessen werden, damit der Ort gezählt weden kann.
 
also bei:

Code:
test=# select * from hannes ;
 ort | v | o 
-----+---+---
   1 | A | a
   1 | A | b
   1 | B | c
   2 | A | n
   2 | A | m
   3 | B | x
   4 | A | y
   4 | B | z
(8 rows)

soll rauskommen:

Code:
test=# select ort, count(distinct v) as v from hannes group by ort having count(distinct v) = 1;
 ort | v 
-----+---
   2 | 1
   3 | 1
(2 rows)

Oder wie oder was?
 
Genau! Die beiden Orte würden rausfallen. Mir dämmerte, dass ich wieder über einen meiner Klassiker stolpern würde ('coun(distinct)').
Danke erstmal, @akretschmer ! Ich setze das nachher mal um und gebe ein Feedback!
 
Werbung:
Zurück
Oben