Problem bein einer Abfrage

weggli1

Benutzer
Beiträge
5
Hallo zusammen

Ich habe ein Problem, beim schreiben einer Abfrage und hoffe, jemand kann mir helfen.

Es geht um eine einzelne Tabelle mit Büchern, mit den Attributen:

Titel
Seitenzahl
Herausgeber
...

Ich möchte nun alle Herausgeber mit mindestens 2 Büchern, welche mehr als 500 Seiten haben abfragen.

Die Count-klausel sowie der Verglich (gleicher Herausgeber) macht mir jedoch probleme, bis jetzt habe ich sowas wie:

SELECT Herausgeber
FROM Db_buecher
WHERE COUNT(

SELECT titel
FROM Db_buecher
WHERE seitenzahl >= 500
AND herausgeber=herausgeber)
>=2

aber das klappt nicht (es ist mir klar, dass es falsch ist, aber ich weiss nicht, wie ich es besser machen kann...).

Liebe Grüsse und danke im voraus!
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.830
aber das klappt nicht (es ist mir klar, dass es falsch ist, aber ich weiss nicht, wie ich es besser machen kann...).


Code:
test=*# select * from weggli1 ;
 titel  | seiten | herausgeber
--------+--------+-------------
 titel1 |    400 | h1
 titel2 |    200 | h1
 titel3 |    600 | h2
 titel4 |    100 | h3
 titel5 |    100 | h3
(5 rows)

test=*# select herausgeber, count(*), sum(seiten) from weggli1 group by 1 having count(*) >= 2 and sum(seiten) >= 500;
 herausgeber | count | sum
-------------+-------+-----
 h1          |     2 | 600
(1 row)

Andreas
 

weggli1

Benutzer
Beiträge
5
Code:
test=*# select * from weggli1 ;
titel  | seiten | herausgeber
--------+--------+-------------
titel1 |    400 | h1
titel2 |    200 | h1
titel3 |    600 | h2
titel4 |    100 | h3
titel5 |    100 | h3
(5 rows)
 
test=*# select herausgeber, count(*), sum(seiten) from weggli1 group by 1 having count(*) >= 2 and sum(seiten) >= 500;
herausgeber | count | sum
-------------+-------+-----
h1          |    2 | 600
(1 row)

Andreas


Dankeschön, das sieht schon super aus, aber wie mache ich das, wenn die einzelnen bücher 500 seiten oder mehr haben sollen?

Also:

titel | seiten | herausgeber
--------+--------+-------------
titel1 | 400 | h1
titel2 | 200 | h1
titel3 | 600 | h2
titel4 | 500 | h2
titel5 | 100 | h3
titel6 | 100 | h3
(6 rows)

Und das Ergebnis wäre schlicht:

h2
 

akretschmer

Datenbank-Guru
Beiträge
9.830
Dankeschön, das sieht schon super aus, aber wie mache ich das, wenn die einzelnen bücher 500 seiten oder mehr haben sollen?

so ähnlich:

Code:
test=*# select * from weggli1 ;
 titel  | seiten | herausgeber
--------+--------+-------------
 titel1 |    400 | h1
 titel2 |    200 | h1
 titel3 |    600 | h2
 titel4 |    100 | h3
 titel5 |    100 | h3
 titel6 |    500 | h2
(6 rows)

test=*# select herausgeber from (select * from weggli1 where seiten >= 500) foo group by 1 having count(*) >= 2 and sum(seiten) >= 500;
 herausgeber
-------------
 h2
(1 row)
 
Werbung:
Oben