我有一个快速mysql查询的技能测试。我得到了表格:
Orders OrderItems
----------------------------------------
id id
date order_id(Orders.id)
shipping_amount product_id
order_status price
customer_id quantity
我需要在2003年6月1日之前显示订单ID和总数(包括运费)和记录。
输出应该是......
| OrderID | OrderTotal |
+-----------+------------+
| 13230 | $55.00 |
| 54455 | $40.00 |
| 59694 | $33.04 |
| 39495 | $21.05 |
提示是使用Group by或subselect。到目前为止,我有以下声明,但不知道下一步该做什么。
Select id AS OrderId,***(not sure what to do here)
from Orders join OrderItems on Orders.id=OrderItems.id
答案 0 :(得分:4)
我无法访问要测试的mysql数据库,但我想它看起来像这样:
select
o.id OrderID,
(select sum(oi.price * oi.quantity) from order_items oi where oi.order_id = o.id) + o.shipping_amount OrderTotal
from
orders o
where
o.date < str_to_date('2003-06-01', '%Y-%m-%d');
答案 1 :(得分:2)
我说它看起来应该是这样的:
SELECT O.ID as OrderID, SUM(OI.price * OI.quantity) AS OrderTotal
FROM Orders O
INNER JOIN OrderItems OI ON O.id = OI.order_Id
WHERE date < '2003-06-01'
GROUP BY O.id
ORDER BY SUM(price * quantity) DESC
不确定如何格式化MySQL中的日期,或者如果你可以在这个版本中通过agregate函数订购,但我很确定这是一个好的开始。