Ich habe drei Tabellen und ich muss den Umsatz für John Smith im Jahr 2015 geteilt durch Monate berechnen.SQL um Umsatz und Gruppe nach Monat zu zählen (bitte überprüfen)
OrderItems
------------ Orders
Products OrderItem_ID ------
---------- Order_ID <---> Order_ID
Product_ID <---> Product_ID Type
Name Quantity Date
Category UnitPrice Customer
Die Tabellen sind durch Order_ID & Order_ID (Tabs Orderitem und Bestellungen) und dann durch Product_IDs (Tabs Produkte und Orderitem). Ich schätze, ich brauche Tab Produkte sowieso nicht.
Orders (Order_ID INT, Type INT, Date DATETIME, Customer VARCHAR)
OrderItems (OrderItem_ID INT, Order_ID INT, Product_ID INT, Quantity INT, UnitPrice MONEY)
Products (Product_ID INT, Name VARCHAR, Category VARCHAR)
Ich habe Dutzende Minuten gewesen googeln und Wissen erfrischend, weil es eine lange Weile her, seit ich habe SQL zum letzten Mal verwendet wird.
Ich schrieb diese Abfrage, aber ich bin mir absolut nicht sicher. Kannst du es bitte überprüfen?
SELECT
SUM(a.quantity * a.price) AS 'turnover',
DATEPART(month, a.date) AS 'month'
FROM
(
SELECT
Quantity.OrderItems AS 'quantity',
UnitPrice.OrderItems AS 'price',
Date.Orders AS 'date',
Customer.Orders AS 'customer'
FROM Orders
JOIN Orders
ON OrderItems.Order_ID = Orders.Order_ID
WHERE
date BETWEEN 2015-01-01 and 2015-12-31
AND customer = 'John Smith'
) a
GROUP BY month
ORDER BY month
Vielen Dank
//
Welche [DBMS] (https verbinden://de.wikipedia.org/wiki/DBMS) Produkt verwenden Sie? "_SQL_" ist nur eine Abfragesprache, nicht der Name eines bestimmten Datenbankprodukts. –
versuchen Sie, Ihre innere Abfrage auszuführen - sie sollte nicht kompiliert werden. Sie müssen sich 'Bestellungen' anschließen, um' Artikel', nicht 'Bestellungen', erneut zu bestellen. – Beth
auch, Ihre 'Gruppe von' geht nicht zur Arbeit mit Bezug auf Ihren Alias' Monat'. Sie müssen nach Ihrer Funktion "datepart" gruppieren. Es ist vielleicht einfacher zu verstehen, wenn Sie in Ihrer inneren Abfrage den Monat "datepart" zurückgeben. – Beth