138. View the Exhibit and examine the structure of the ORDER_ITEMS table.
Examine the following SQL statement:
SELECT order_id, product_id, unit_price
FROM order_items WHERE unit_price = (SELECT MAX(unit_price)
FROM order_items GROUP BY order_id).
You want to display the PRODUCT_ID of the product that has the highest
UNIT_PRICE per ORDER_ID.
What correction should be made in the above SQL statement to achieve this?
A. Replace = with the IN operator.
B. Replace = with the >ANY operator.
C. Replace = with the >ALL operator.
D. Remove the GROUP BY clause from the subquery and place it in the main query
答案是A
我理解题目的意思,主要(SELECT MAX(unit_price) FROM order_items GROUP BY order_id) 出来的是1个到 多个每个 订单id 的最高价格, 然后 用不同 订单id 的商品价格 和这些价格来做匹配, ,,,
但是这样出来的只是 每个最高价格相等的一些 条目,
比方说 这样的情况
order_id unit_price
001 100
001 90
001 80
002 100
002 110
002 120
如果按照 上边的情况来做, 出来的结果应该是 这3条
order_id unit_price
001 100
002 100
002 110
--------------------------------------
也就说 order_id 001 商品的最高价格 100, 也被 order_id是002 的商品 ,进行价格匹配,
如果 保证只是选出 每个order_id 下price 最高的, 应该如何? 是不是需要另外的 group 字段,??
算法这块 还请帮忙一下
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------