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-ID: 294210

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

Ausgedruckt am: 23.11.2024 um 02:11 Uhr

LordGurke
LordGurke 25.01.2016 um 22:05:46 Uhr
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
BirdyB
BirdyB 26.01.2016 um 08:06:33 Uhr
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
SeverinWohlleben
SeverinWohlleben 26.01.2016 aktualisiert um 08:51:22 Uhr
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.
BirdyB
BirdyB 26.01.2016 um 08:49:36 Uhr
Goto Top
Das wäre dann der ungewichtete Durchschnitt...
Ich dachte, der TO möchte ein gewichtetes Ergebnis.
SeverinWohlleben
SeverinWohlleben 26.01.2016 aktualisiert um 10:08:41 Uhr
Goto Top
Absolut ungetestet und ich bezweifle selbst das es funktioniert...

SELECT (Einzelpreis*Menge)/menge AS Durchschnitt
FROM DeineTabelle
WHERE 'ArtikelID' LIKE '2'
boesi666
boesi666 26.01.2016 um 19:20:28 Uhr
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!!