2017-09-14 55 views
0

我認爲我的DISTINCT語句有助於按order.customer_num進行分組,但似乎並非如此。我相信這與我的SELECT語句中的表達式有關。真的很新的SQL。嘗試組合行

SELECT DISTINCT orders.customer_num AS "Customer Number", 
     COUNT(orders.order_num) AS "Number of Orders", 
     SUM(items.quantity) AS "Total Quantity", stock.unit_price AS "Unit Price", 
     items.quantity * stock.unit_price AS "Total Price" 
FROM orders, 
    items, 
    stock 
WHERE orders.order_num = items.order_num 
    AND items.stock_num = stock.stock_num 
GROUP BY orders.customer_num, items.quantity, stock.unit_price 
ORDER BY orders.customer_num; 

附上一張照片,顯示我所得到的。 My Result

+0

你可以請附上表格說明。你確定你想把他們與客戶編號分開嗎?如果是這種情況,你得到的結果是正確的,因爲結果數據顯示,對於每個客戶,許多項目已被購買(如果我的假設是正確的,那是一個項目爲每個單位價格)。 – brenners1302

+0

添加一些示例表格數據和預期結果 - 作爲格式化文本(而不是圖像)。另外,GROUP BY時很少需要SELECT DISTINCT。 – jarlh

+0

今天提示:切換到現代,明確的'JOIN'語法。易於編寫(沒有錯誤),更易於閱讀和維護,並且在需要時更容易轉換爲外部聯接。 – jarlh

回答

0

您的stock.unit_price似乎是唯一的。從邏輯上說,它選擇unit_priceitem。要麼您需要丟棄stock表和相關的加入條件或總結

0

您是否想要group由客戶計算並計算所有列的總數?如果我對你不需要group byitems.quantity, stock.unit_price列和distinct,試試這個

SELECT orders.customer_num AS "Customer Number", 
     COUNT(orders.order_num) AS "Number of Orders", -- or SUM() depends on your logic 
     SUM(items.quantity) AS "Total Quantity", 
     SUM(stock.unit_price) AS "Unit Price", 
     SUM(items.quantity * stock.unit_price) AS "Total Price" 
FROM orders, items, stock 
WHERE orders.order_num = items.order_num 
    AND items.stock_num = stock.stock_num 
GROUP BY orders.customer_num 
ORDER BY orders.customer_num;