在 W3school 上做練習題 - 資料庫在這里:https ://www.w3schools.com/SQL/TRYSQL.ASP?FILENAME=TRYSQL_SELECT_ALL
我正在嘗試退回OrderDetails法國國家客戶訂購最多的產品(在表中找到) (在表Country中找到Customers)。為此,我首先必須加入 3 個表:首先通過加入OrderDetails和Orderson OrderID,然后通過加入合并表Customerson CustomerID。問題是,現在我有了表格,我似乎無法弄清楚如何回傳法國客戶訂購最多的 ProductID。以下代碼:
SELECT
c.customer_id,
SUM(od.Quantity) AS totalQuantity
FROM (OrderDetails od LEFT JOIN Orders o ON od.OrderID = o.OrderID)
LEFT JOIN Customers c ON o.CustomerID = c.CustomerID
GROUP BY od.ProductID
ORDER BY totalQuantity DESC
LIMIT 1;
回傳錯誤:
Syntax error in ORDER BY clause
關于我在這里做錯了什么有什么建議嗎?我正在做的事情甚至接近退回法國客戶訂購最多的 ProductID 嗎?
uj5u.com熱心網友回復:
LIMIT 不是 Access SQL 語法,所以試試:
SELECT TOP 1
od.ProductID,
SUM(od.Quantity) AS totalQuantity
FROM
(OrderDetails AS od
LEFT JOIN
Orders AS o ON od.OrderID = o.OrderID)
LEFT JOIN
Customers AS c ON o.CustomerID = c.CustomerID
GROUP BY
od.ProductID
ORDER BY
SUM(od.Quantity) DESC;
uj5u.com熱心網友回復:
W3Schools 正在使用連接到 Sqlite 3 的 WebSQL
您可以檢查它的版本:
SELECT sqlite_version();
問題中的查詢不起作用,因為它選擇c.customer_id,應該是c.CustomerID。
此查詢將回傳在法國擁有最多獨特客戶的產品。
國家/地區取自客戶表。
Products 表只被連接以獲得產品的名稱。
SELECT
od.ProductID
, p.ProductName
, COUNT(DISTINCT o.OrderID) AS TotalOrders
, COUNT(DISTINCT c.CustomerID) AS TotalCustomers
, SUM(od.Quantity) AS TotalQuantity
FROM "OrderDetails" AS od
INNER JOIN "Orders" AS o ON o.OrderID = od.OrderID
INNER JOIN "Customers" AS c ON c.CustomerID = o.CustomerID
INNER JOIN "Products" AS p ON p.ProductID = od.ProductID
WHERE c.Country = 'France'
GROUP BY od.ProductID, p.ProductName
ORDER BY TotalCustomers DESC
LIMIT 1
這是一個肉餡餅。
uj5u.com熱心網友回復:
你是這個意思嗎?
SELECT
c.CustomerID, c.Country,
SUM(od.Quantity) AS totalQuantity
FROM Customers c
LEFT JOIN Orders o ON (c.CustomerID = o.CustomerID)
LEFT JOIN OrderDetails od ON (od.OrderID = o.OrderID)
where c.Country = 'France'
GROUP BY c.CustomerID, c.Country
ORDER BY totalQuantity DESC;
這將輸出法國客戶的訂單數量
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/420114.html
標籤:
上一篇:如何在sqlite資料庫Python中創建一個包含列索引的新列?
下一篇:在資料框中建立索引
