Hilfe bei SQL-Abfrage (Anfänger)

zoidberg33

Neuer Benutzer
Beiträge
1
Hallo Community,
ich bin SQL-Anfänger und habe ein Problem mit folgenden Abfragen:

1 Tabelle: ArtNr, ArtName, ArtPreis, ArtGruppe

1. Suche nach einem (denselben) ArtName, der mehrere (unterschiedliche) ArtNr hat (Anzeige v. allen 4 Feldern)
2. Suche nach ArtName, der höheren ArtPreis hat, als den durchschnittlichen Preis innerhalb gleicher ArtGruppe (Anzeige von allen 4 Feldern)

Über hilfe würde ich mich sehr freuen!
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.612
Hallo Community,
ich bin SQL-Anfänger und habe ein Problem mit folgenden Abfragen:

1 Tabelle: ArtNr, ArtName, ArtPreis, ArtGruppe

1. Suche nach einem (denselben) ArtName, der mehrere (unterschiedliche) ArtNr hat (Anzeige v. allen 4 Feldern)
2. Suche nach ArtName, der höheren ArtPreis hat, als den durchschnittlichen Preis innerhalb gleicher ArtGruppe (Anzeige von allen 4 Feldern)

Über hilfe würde ich mich sehr freuen!


Im Prinzip so:

Code:
test=*# select * from zoldberg ;
 artnr | artname | artpreis | artgruppe
-------+---------+----------+-----------
     1 | art1    |       10 |         1
     1 | art1    |       20 |         1
     2 | art2    |       30 |         2
(3 rows)

1:
Code:
test=*# select artname, count(artnr) from zoldberg group by 1 having count(artnr) > 1;
 artname | count                                                                      
---------+-------                                                                     
 art1    |     2                                                                      
(1 row)

Damit hast die artname - Werte von dem, was Du suchst. rest via Subselect oder JOIN

2:
Code:
test=*# select * from zoldberg left join (select artgruppe, avg(artpreis) from zoldberg group by 1) foo using (artgruppe) where zoldberg.artpreis > foo.avg;
 artgruppe | artnr | artname | artpreis |         avg
-----------+-------+---------+----------+---------------------
         1 |     1 | art1    |       20 | 15.0000000000000000
(1 row)
 
Oben