SQL Abfrage Durchschnitt?
Aufgabenstellung:
Geben Sie eine Tabelle an, die je Artikel den Unterschied zwischen seinem Preis und dem Durchschnittspreis aller Artikel angibt. Sortieren Sie nach Preis aufsteigend.
Datenbank siehe https://www.w3schools.com/sql/default.asp.
Mein bisheriger Ansatz sieht so aus:
SELECT ProductID, ProductName, AVG(Price), Price, (AVG(Price)-Price) as Differenz
FROM Products order by Price asc
Wir sind hier wirklich noch bei den Basics aber ich bekomme es zum verrecken nicht hin mir den Durchschnittspreis aller Artikel für jeden Artikel in jeder Zeile anzeigen zu lassen.
Wenn ich die Abfrage so eingebe werden mir lediglich alle relevanten Daten für die 1. Zeile also den 1. Artikel angezeigt, die restlichen Artikel aber nicht.
Kann hier jemand helfen?
Alternativ könnte man hier auch mit Create Table arbeiten, so funktioniert es auch mit einem JOIN , soll aber in diesem Fall nicht so umgesetzt werden und mit einem einfachen SELECT möglich sein?!
1 Antwort
wenn du nach artikel gruppieren einen druchschnitt willst, weil es mehere artikel mit der gleichen bezeichnung / id gibt , musst du halt vorher gruppieren , dann den average bilden
SELECT ProductID, ProductName, AVG(Price), Price, (AVG(Price)-Price) as Differenz
FROM Products
GROUP BY ProductID
ORDER BY Price ASC
oder ProductName oder was auch immer da mehrfach vorkommt .
Leider sehen wir hier nicht die Tabelle und die Werte .
SELECT ProductID , (
SELECT AVG(Price) FROM Products
) as Average , Price , (Average - Price) as Differ
FROM Products;
Ein Aggregat brauch immer ein Group By , somit musst du ein Subselect nehmen . Du kannst keine Einzelnen Werte mit Gesamtwerten mischen , ging mal früher bei MySQL , heute aber auch da nicht mehr .
Es geht um die Tabelle "Products" aus der Datenbank auf https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_all
Durch "Group by" werden mir jetzt tatsächlich mehr Zeilen angezeigt, allerdings nicht mit den Daten die ich haben möchte:
Gefragt ist quasi die Ausgabe von:
Produkt ID - Produkt Name - Einzelpreis für jedes Produkt - AVG Preis aller Produkte - Differenz der einzelnen Produktpreise zum Durchschnittspreis aller Produkte für jedes Produkt - aufsteigend nach Preis sortiert
gelöst hat das mein Problem leider noch nicht.