Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Wie muss die Abfrage aussehen?

Empfohlene Antworten

Veröffentlicht

Hallo Leute,

ich hab zwei Fragestellungen auf eine Tabelle, komme aber irgendwie auf kein Ergebniss. Ich hoffe von euch kann mir jemand helfen.

Ich hab folgende Tabelle:

Bestellnummer Artikel Preis

0001 Cola 10

0001 Bier 10

0001 Sprudel 20

0002 Bier 20

0002 Cola 10

0003 Limo 15

0003 Sprudel 10

0003 Cola 20

... ... ...

Tabelle ist natürlich superlang!

Meine erste Fragestellung wäre: Wieviel Bestellungen mit 3 Artikel gibt es?

Meine zweite Fragestellung wäre: Wie ist der Durchschnittspreis aller Bestellungen mit Bier und wie der Durchschnittspreis aller Bestellungen ohne Bier?

Ich hoffe ihr wisst wie ich es meine.

Schonmal Danke im Vorraus.

Gruss

Hackschnitzel

in excel ?

Ganz normal in SQL.

Es kann auch eine Prozedur sein, aber am liebsten wäre mir ne ganz einfache Select-Anweisung.

//Tabelle test (t_bstNr INT, t_article VARCHAR, t_preis FLOAT)

//Bestellungen mit 3 Artikeln

SELECT t_bstNr FROM test GROUP BY t_bstNr HAVING COUNT(t_bstNr) = 3;

//DS-Preis der Artikel aller Bestellungen mit Bier

SELECT t1.t_bstNr, (SUM(t1.t_preis) / COUNT(t1.t_bstNr)) fPreisDS FROM test AS t1 LEFT JOIN test AS t2 ON t2.t_bstNr=t1.t_bstNr AND t2.t_article='Bier' WHERE t2.t_bstNr IS NOT NULL GROUP BY t1.t_bstNr;

//DS-Preis der Artikel aller Bestellungen ohne Bier

SELECT t1.t_bstNr, (SUM(t1.t_preis) / COUNT(t1.t_bstNr)) AS fPreisDS FROM test AS t1 LEFT JOIN test AS t2 ON t2.t_bstNr=t1.t_bstNr AND t2.t_article='Bier' WHERE t2.t_bstNr IS NULL GROUP BY t1.t_bstNr;

Das werde ich sofort mal versuchen.

Danke.

Also das erste hat wunderbar funktioniert.

Das zweite zwar auch, aber ich brauch es ein bissl anders.

Wenn ich nochmal auf das Beispiel gehe, dass ich oben geschrieben hab. Nehmen wir an, es gab nur diese drei Bestellungen. Dann möcht ich das folgendermaßen:

Mit Bier:

Hier hab ich Bestellung 0001. Also mach ich 10 + 10 + 20 = 40

Dann hab ich Bestellung 0002. Also mach ich 20 + 10 = 30.

Jetzt nehm ich die 30 (Preis 0001) + 40 (Preis 0002) / 2 (Anzahl Bestellungen)

Mein Durchschnittspreis aller Bestellungen mit Bier ist 35 €.

Ohne Bier:

Hier hab ich Bestellung 0003. Also mach ich 15 + 10 + 20 = 45

Jetzt nehm ich die 45 (Preis 0003) / 1 (Anzahl Bestellungen)

Mein Durchschnittspreis aller Bestellungen ohne Bier ist 45 €.

Es ist bestimmt eine super einfache Abfrage, aber ich komme einfach nicht drauf.

Gruss

hackschnitzel

Es ist bestimmt eine super einfache Abfrage, aber ich komme einfach nicht drauf.

select avg(preis) from (select sum(preis) preis from bestellungen where bestellid in (select bestellid from bestellungen where artikel='bier') group by bestellid);

die zweite sieht genauso aus, nur statt 'not in' statt 'in'.

-j

Geht auch irgendwie nicht. Am besten geklappt hat die Abfrage von Monty82, allerdings brauch ich nicht den Durchschnittspreis der einzelnen sondern allen zusammen.

Ich hätt noch ne Fragestellung. Wie muss die Abfrage aussehen, wenn ich wissen will welche Artikel kommen zweimal unter einer Bestellnummer vor ?

Zum Beispiel bei dieser Tabelle:

Bestellnummer Artikel Preis

0001 Cola 10

0001 Bier 10

0001 Sprudel 20

0002 Bier 20

0002 Cola 10

0003 Limo 15

0003 Sprudel 10

0003 Sprudel 20

...

Gruss

Hackschnitzel

Geht auch irgendwie nicht.

gehts irgendwie genauer? was geht nicht?

-j

Zunächst hat er mir was gebracht, wie UDFCALLNAME zwischen ) und ;.

Dann hab ich dran rumgeschraubt. Und es kamen nur Fehlermeldungen.

Ich muss es nochmal versuchen, dann schreib ich genaueres.

Ich hab das gefühl, das er keine select anweisung im from Teil machen kann.

Ich dachte immer, das das gar nicht geht?

Wegen der Versionsnummer muss ich mal genauer nachschauen, da ich einen SQL Assistenten in einem anderen Programm nutze.

Ich hab das Problem aber jetzt gelöst. Ich habs folgendermaßen gemacht:

1. Summe aller Preise in den betreffenden Bestellungen:

select sum(preis) from bestellungen where bestellid in (select bestellid from bestellungen where artikel='bier') group by bestellid;

2. Anzahl Bestellungen, in denen Bier vorkommt:

select count(bestellnummer) from bestellungen where bestellid in (select bestellid from bestellungen where artikel='bier') group by bestellid;

3. Hab Summe durch Anzahl geteilt und hab nun mein Ergebnis. Umständlich, aber ging.

Dennoch danke für die Hilfe.

Jetzt hab ich nur noch ein Problem. Und zwar:

Wie muss die Abfrage aussehen, wenn ich wissen will wieviel Artikel kommen zweimal unter einer Bestellnummer vor ?

Oder Wieviel Bestellungen enthalten zweimal den gleichen Artikel?

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.