【发布时间】:2017-01-26 13:30:16
【问题描述】:
我对 SQL 还很陌生。我在 Oracle 12c 中使用 Order Entry 示例模式。我想按产品类别名称在 OE.Product_Information.list_price 中找到最大百分比折扣。
我尝试对类别进行分组,但不知何故,我最终得到了具有不同折扣价格的同一类别的重复项。我知道这可能是由于该类别中的产品。为了进一步区分这些类别,我已经包括了年份。有没有更好的方法来解决这个问题?
这是我目前所拥有的
SELECT *
FROM
(
SELECT ROUND(((p.LIST_PRICE-i.UNIT_PRICE)/i.UNIT_PRICE)*100,2)AS LARGEST_DISCOUNT_PERCENT,
t.CATEGORY_NAME
FROM OE.PRODUCT_INFORMATION p,
OE.CATEGORIES_TAB t,
OE.ORDER_ITEMS i
WHERE t.CATEGORY_ID = p.CATEGORY_ID
AND i.PRODUCT_ID = p.PRODUCT_ID
AND rownum <=602
GROUP BY
ROUND(((p.LIST_PRICE-i.UNIT_PRICE)/i.UNIT_PRICE)*100,2),
t.CATEGORY_NAME)
ORDER BY LARGEST_DISCOUNT_PERCENT DESC ;
结果: enter image description here
编辑:只是为了进一步澄清这一点-
我正在使用 oracle 12c 示例模式 - 订单输入。此架构中有几个表。对于我要解决的问题,我正在使用下表: - 产品信息 - 类别_标签 - Order_Items
我正在使用的此架构和表的关系图如下所示: Relational Diagram
我想知道是否有办法在不重复的类别中按类别合并最高折扣,从而找到从其标价到其单价提供最大折扣的类别名称。
【问题讨论】:
-
请与架构分享您的示例输入和输出...
-
我没有在模式中输入任何内容。订单条目模式是一组可用于 oracle 12c 的示例模式。
-
如果您可以详细说明您的问题,那么访问此问题的人们会很容易更好地理解。
-
我添加了关系图并指定了我在架构中使用的表。这有点帮助吗?