boesi666
Goto Top

SQL Abfrage Durchschnittspreis aller zeilen

Nabend zusammen,

ich steh heute Abend irgendwie auf dem Schlauch. Könnt Ihr mir mal helfen? Ich habe eine Tabelle Wareneingaenge mit u.a. 2 spalten Menge, EinzelPreis

ArtikelID Menge EinzelPreis
2 4999 1
2 1 100
2 5 10
999 1 1

Nun möchte ich den Durchschnittspreis aller Artikel, deren Artikel ID 2 ist.

Es müssten also (4999*1)/Menge + (1*100)/Menge zusammen gerechnet werden. Ziel ist es in einer Wareneingangstabelle den Durchschnitt EK aller Einbuchungsvorgänge zu ermitteln

Könnt Ihr mir beim bilden des SQL Befehl helfen? Ich nutze eine access DB. MySQL oder MSSQL wäre aber auch verständlich für mich.

Content-Key: 294210

Url: https://administrator.de/contentid/294210

Printed on: April 23, 2024 at 16:04 o'clock

Member: LordGurke
LordGurke Jan 25, 2016 at 21:05:46 (UTC)
Goto Top
Noja, man kann zumindest bei MySQL direkt per AVG(`NameDerSpalte`) den Durchschnittswert dieser Spalte zurückgeben lassen, gleiches scheint es bei Access auch zu geben: http://www.techonthenet.com/access/functions/numeric/avg.php
Member: BirdyB
BirdyB Jan 26, 2016 at 07:06:33 (UTC)
Goto Top
Moin,

Zitat von @boesi666:

Nabend zusammen,

ich steh heute Abend irgendwie auf dem Schlauch. Könnt Ihr mir mal helfen? Ich habe eine Tabelle Wareneingaenge mit u.a. 2 spalten Menge, EinzelPreis

ArtikelID Menge EinzelPreis
2 4999 1
2 1 100
2 5 10
999 1 1

Nun möchte ich den Durchschnittspreis aller Artikel, deren Artikel ID 2 ist.
Soweit klar...
Es müssten also (4999*1)/Menge + (1*100)/Menge zusammen gerechnet werden. Ziel ist es in einer Wareneingangstabelle den Durchschnitt EK aller Einbuchungsvorgänge zu ermitteln
Lege eine passende View für die gewünschte ID an (alternativ baue dir eine passende function), dann legst du dir eine Spalte oder bei der Function eine Variable für die Gesamtmenge an SUM(Menge) und eine Spalte für den Gesamtpreis (Menge* EinzelPreis) und dann teilst du SUM(Gesamtpreis) durch SUM(Menge) und damit solltest du dein Ergebnis haben.
Könnt Ihr mir beim bilden des SQL Befehl helfen? Ich nutze eine access DB. MySQL oder MSSQL wäre aber auch verständlich für mich.
Ich hoffe mit dem Weg kannst du die passenden SQL-Befehle selbst erstellen.
Wenn du noch Hilfe brauchst, sag Bescheid!

Beste Grüße!


Berthold
Member: SeverinWohlleben
SeverinWohlleben Jan 26, 2016 updated at 07:51:22 (UTC)
Goto Top
Ungetestet, aber sollte funktionieren.
SELECT AVG(EinzelPreis) AS 'Durschnitt' FROM 'DeineTabelle' WHERE ArtikelID LIKE '2';

Zitat von @boesi666:
Es müssten also (4999*1)/Menge + (1*100)/Menge zusammen gerechnet werden.
Ziel ist es in einer Wareneingangstabelle den Durchschnitt EK aller Einbuchungsvorgänge zu ermitteln

Diese Rechnung (4999*1)/Menge + (1*100)/Menge ist übrigens völlig sinnfrei. Denn du rechnest hier folgendes:
(Menge * Einzelpreis) / Menge + (Menge * Einzelpreis) / Menge ... falls ich nichts komplett falsch verstanden hab bedeutet das...
(Menge * Einzelpreis) / Menge = Einzelpreis = Einzelpreis + Einzelpreis ... richtig wäre aber folgendes ...
Summe aus allen Einzelpreisen / Anzahl der verschiedenen Artikel mit ID gleich 2.
Member: BirdyB
BirdyB Jan 26, 2016 at 07:49:36 (UTC)
Goto Top
Das wäre dann der ungewichtete Durchschnitt...
Ich dachte, der TO möchte ein gewichtetes Ergebnis.
Member: SeverinWohlleben
SeverinWohlleben Jan 26, 2016 updated at 09:08:41 (UTC)
Goto Top
Absolut ungetestet und ich bezweifle selbst das es funktioniert...

SELECT (Einzelpreis*Menge)/menge AS Durchschnitt
FROM DeineTabelle
WHERE 'ArtikelID' LIKE '2'
Member: boesi666
boesi666 Jan 26, 2016 at 18:20:28 (UTC)
Goto Top
ich danke Euch für die Tipps. Ich werd mich mal damit ran setzen und probieren. Wenn ich Erfolg habe, lasse ich es Euch wissen. Danke schonmal!!