Leichte SQL Frage :-)

Paulita

Neuer Benutzer
Beiträge
3
Hallo zusammen,
vermutlich kein schwieriges Problem aber ich habe trotzdem keine Idee :-(.
Ich benötige ein SQL, dass mir den neuesten Datumswert gibt, der zu jedem Namen vorkommt, hier also "20250201":

Name Datum
A 20250131
A 20250202
A 20250203
A 20250201
B 20250131
B 20250201
B 20250203
C 20250131
C 20250202
C 20250204
C 20250201

Any idea? Falls ich im falschen Forum bin, sorry und wo wäre es besser plaziert?
 
Werbung:
Danke für die Antwort :-). Damit bekomme ich das neueste Datum jeweils pro Name. Ich benötige aber das neueste Datum, dass in allen Namen vorkommt, im Beispiel wäre das nur "20250201". ("20250131" kommt auch in allen Namen vor).
 
Code:
SELECT max(datum) FROM (
SELECT   datum
FROM    tabelle
GROUP BY datum
HAVING count(DISTINCT [Name]) = ( SELECT count(DISTINCT [Name]) FROM tabelle )
) t
Ich bin mir nicht sicher warum man diese Abfrage genau machen wollen würde :) Vor allem: Gibt es kein Datum das wirklich bei allen vor kommt, dann ist das Ergebnis NULL. Ich kann nicht beurteilen, wie wahrscheinlich das passieren kann, ist aber glaube ich eine nicht zu unterschätzende Fehlerquelle.
 
vielleicht so?

Code:
postgres=# select * from paulita ;
 name | datum 
------+-------
 a    |    10
 a    |    11
 a    |    12
 B    |    10
 B    |    11
 C    |    11
 C    |    12
(7 Zeilen)

postgres=# with foo as (select count(distinct datum) from paulita) select datum, count(1) from paulita group by datum having count(1) = (select max(count) from foo) order by datum ;
 datum | count 
-------+-------
    11 |     3
(1 Zeile)
 
Code:
SELECT max(datum) FROM (
SELECT   datum
FROM    tabelle
GROUP BY datum
HAVING count(DISTINCT [Name]) = ( SELECT count(DISTINCT [Name]) FROM tabelle )
) t
Ich bin mir nicht sicher warum man diese Abfrage genau machen wollen würde :) Vor allem: Gibt es kein Datum das wirklich bei allen vor kommt, dann ist das Ergebnis NULL. Ich kann nicht beurteilen, wie wahrscheinlich das passieren kann, ist aber glaube ich eine nicht zu unterschätzende Fehlerquelle.
Danke euch sehr für die Antworten! Das ist schon genau das, was ich benötige :-). "NULL" ist auch eine valide Antwort.
 
count(1) ist aber nerdiger, genauso wie ich gerne NOT EXISTS ( SELECT 1/0 FROM... schreibe, weil ich das mal irgendwo gesehen habe und ziemlich cool fand ;-)
 
Werbung:
Ich verwende gerne not exists (select NULL ...) wenn ich Menschen richtig verwirren will.

Einmal habe ich not exists (select 'does not matter'...) verwendet. Das war wohl noch verwirrender.
 
Zurück
Oben