Vinzenz Mai: PostgreSQL 7.4: doppelte Daten ausgeben

Beitrag lesen

Hallo

wie kann ich ermitteln, für welchen Tag es mehrere Einträge gibt?

Beispiel:
    date    |   time
------------+----------
2002-01-01 | 00:00:00
2003-01-01 | 00:00:00
2006-12-11 | 11:08:37
2006-12-11 | 11:10:21
2006-12-31 | 00:00:00
2006-12-31 | 15:21:32
2006-12-31 | 17:00:00

das ist einfach.

SELECT  
    date  
FROM tabelle  
GROUP BY date  
HAVING COUNT(*) > 1

psql -U xyz -d xyz -c "SELECT DISTINCT to_char(gueltigab, 'YYYY-MM-DD') AS date, TO_CHAR(gueltigab, 'HH24:MI:SS') AS time, count(gueltigab) FROM xyz GROUP BY gueltigab HAVING count(to_char(gueltigab, 'YYYY-MM-DD')) > 1"

was soll das? Du darfst die Spalte "gueltigab" überhaupt nicht berücksichtigen, da Du sonst nicht so gruppieren kannst, wie Du willst.

wie bekomme ich es hin, dass count soetwas ergibt?
    date    |   time   | count
------------+----------+-------
2002-01-01 | 00:00:00 |   1
2003-01-01 | 00:00:00 |   1
2006-12-11 | 11:08:37 |   2
2006-12-11 | 11:10:21 |   2
2006-12-31 | 00:00:00 |   3
2006-12-31 | 15:21:32 |   3
2006-12-31 | 17:00:00 |   3

Nimm die Spalte COUNT(*) AS count (ein superschlechter Spaltenname) hinzu.
Mache daraus einen View. Joine die Ausgangstabelle mit dem View über die Spalte date.

date    | count
------------+-------
2002-01-01 |   1
2003-01-01 |   1
2006-12-11 |   2
2006-12-31 |   3

das ist wieder supereinfach:

SELECT  
    date,  
    COUNT(*) AS anzahl -- count ist ein miserabler Spaltenname :-)  
FROM tabelle  
GROUP BY date  

zurückgegeben soll dann nur noch
    date    | count
------------+-------
2006-12-11 |   2
2006-12-31 |   3

ebenfalls einfach:

SELECT  
    date,  
    COUNT(*) AS anzahl -- count ist ein miserabler Spaltenname :-)  
FROM tabelle  
GROUP BY date  
HAVING COUNT(*) > 1

das sollte sich aber mit having regeln lassen, wenn ich die richtige Anzahl ermitteln kann.

ja, s.o.

ps. Frage ist Daten die Mehrzahl von Datum?

Ja.

Zusammenfassung: Ich verstehe Dein Problem nicht.

Freundliche Grüße

Vinzenz