Ich habe 3 Tische.Ist es möglich, diese SQL-Abfrage zu vereinfachen?
'Order details' OrderID | Quantity | UnitPrice | ProductID 1002 | 19 | 17 | 824 1003 | 5 | 15 | 285 1004 | 7 | 6 | 543
'Orders' OrderID | CustomerID 1002 | 224 1003 | 224 1004 | 348
'Customers' CustomerID| Name | Phone 224 | John | 235-453 225 | July | 532-232
Ich habe die Informationen über Personen erhalten, die weniger mit einem Durchschnittspreis von mehr als 10 Produkte bestellt als 17. Ich tue dies, aber ich bin nicht sicher, wenn es der beste Ansatz ist.
SELECT *
FROM customers
WHERE customerid IN
(SELECT DISTINCT customerid
FROM orders
WHERE orderid IN
(SELECT orderid id
FROM 'order details'
WHERE 17 >
(SELECT avg(unitprice)
FROM 'order details'
WHERE orderid = id
GROUP BY orderid)
AND 10 <
(SELECT sum(quantity)
FROM 'order details'
WHERE orderid = id
GROUP BY orderid)
GROUP BY orderid))
Bedeutet "bestellte mehr als 10 Produkte" in einer einzigen Bestellung oder in allen ihren Bestellungen? –
@ CL. über alle ihre Bestellungen –
Was bedeutet "mehr als 10 produziert mit einem Durchschnittspreis von weniger als 17"? Die Produkte, die Sie auswählen, die am Ende mehr als 10 sind, sollten einen Durchschnitt von weniger als 17 haben? Oder meinst du "Leute, die mehr als 10 Produkte bestellt haben und ** alle Produkte, die sie bestellt haben, einen Durchschnitt von weniger als 17 haben"? –