日期:2014-05-17  浏览次数:21013 次

有个ocp 047 的题目看着好像有问题

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 字段,??

算法这块 还请帮忙一下
 


------解决方案--------------------
探讨
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 ……

------解决方案--------------------
探讨
如果 保证只是选出 每个order_id 下price 最高的, 应该如何? 是不是需要另外的 group 字段,??

算法这块 还请帮忙一下

------解决方案--------------------
探讨
lz明显说错了,用上面的select语句怎么会……