试图分组行

时间:2017-09-14 04:53:33

标签: sql oracle

我认为我的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

2 个答案:

答案 0 :(得分:0)

您的stock.unit_price似乎是独一无二的。从逻辑上讲,它按unit_price选择item。您需要丢弃stock表和相关的连接条件或总结

答案 1 :(得分:0)

您希望客户group并计算所有列的总数吗?如果我是对的你不需要group by items.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;