查询时返回 MAX 函数?
Returning MAX function on query?
我需要找到利润率最高的库存商品,但我不确定该怎么做,因为这是在查询中计算的,而不是从 table 中获取的。
我的脚本如下(使用 Oracle 11g),目前 returns 几个库存项目,而我只需要一个。请帮忙
SELECT (UPPER(Orderline.StockID) || ' ' || INITCAP(StockDesc)) AS "Item",
CategoryDesc AS "Category",
LocationCity AS "Warehouse",
Quantity AS "Number Sold",
TO_CHAR(Quantity * UnitPrice) AS "Total Income",
TO_CHAR(Quantity * UnitCost) AS "Total Cost",
TO_CHAR((Quantity * UnitPrice) - (Quantity * UnitCost)) AS "Profit"
FROM Orderline INNER JOIN
(Stock INNER JOIN
("CATEGORY" INNER JOIN Warehouse
ON "CATEGORY".Warehouse = Warehouse.WarehouseID)
ON Stock.ItemCategory = "CATEGORY".CategoryID)
ON Orderline.StockID = Stock.StockNo
ORDER BY ((Quantity * UnitPrice) - (Quantity * UnitCost)) DESC;
试试这个...
select * from (SELECT (UPPER(Orderline.StockID) || ' ' || INITCAP(StockDesc)) AS "Item",
CategoryDesc AS "Category",
LocationCity AS "Warehouse",
Quantity AS "Number Sold",
TO_CHAR(Quantity * UnitPrice) AS "Total Income",
TO_CHAR(Quantity * UnitCost) AS "Total Cost",
TO_CHAR((Quantity * UnitPrice) - (Quantity * UnitCost)) AS "Profit"
FROM Orderline INNER JOIN
(Stock INNER JOIN
("CATEGORY" INNER JOIN Warehouse
ON "CATEGORY".Warehouse = Warehouse.WarehouseID)
ON Stock.ItemCategory = "CATEGORY".CategoryID)
ON Orderline.StockID = Stock.StockNo
ORDER BY Profit DESC)
where rownum = 1;
我在评论中看到您已经尝试 rownum=1
内部 select... 这将 select 唯一的 Item
并对其进行排序order by
。对一组元素进行排序的方法并不多。但是如果你已经对所有元素进行了排序,你可以只选择第一个。这就是这里发生的事情。
查看有关此案例的更多信息here。
我需要找到利润率最高的库存商品,但我不确定该怎么做,因为这是在查询中计算的,而不是从 table 中获取的。 我的脚本如下(使用 Oracle 11g),目前 returns 几个库存项目,而我只需要一个。请帮忙
SELECT (UPPER(Orderline.StockID) || ' ' || INITCAP(StockDesc)) AS "Item",
CategoryDesc AS "Category",
LocationCity AS "Warehouse",
Quantity AS "Number Sold",
TO_CHAR(Quantity * UnitPrice) AS "Total Income",
TO_CHAR(Quantity * UnitCost) AS "Total Cost",
TO_CHAR((Quantity * UnitPrice) - (Quantity * UnitCost)) AS "Profit"
FROM Orderline INNER JOIN
(Stock INNER JOIN
("CATEGORY" INNER JOIN Warehouse
ON "CATEGORY".Warehouse = Warehouse.WarehouseID)
ON Stock.ItemCategory = "CATEGORY".CategoryID)
ON Orderline.StockID = Stock.StockNo
ORDER BY ((Quantity * UnitPrice) - (Quantity * UnitCost)) DESC;
试试这个...
select * from (SELECT (UPPER(Orderline.StockID) || ' ' || INITCAP(StockDesc)) AS "Item",
CategoryDesc AS "Category",
LocationCity AS "Warehouse",
Quantity AS "Number Sold",
TO_CHAR(Quantity * UnitPrice) AS "Total Income",
TO_CHAR(Quantity * UnitCost) AS "Total Cost",
TO_CHAR((Quantity * UnitPrice) - (Quantity * UnitCost)) AS "Profit"
FROM Orderline INNER JOIN
(Stock INNER JOIN
("CATEGORY" INNER JOIN Warehouse
ON "CATEGORY".Warehouse = Warehouse.WarehouseID)
ON Stock.ItemCategory = "CATEGORY".CategoryID)
ON Orderline.StockID = Stock.StockNo
ORDER BY Profit DESC)
where rownum = 1;
我在评论中看到您已经尝试 rownum=1
内部 select... 这将 select 唯一的 Item
并对其进行排序order by
。对一组元素进行排序的方法并不多。但是如果你已经对所有元素进行了排序,你可以只选择第一个。这就是这里发生的事情。
查看有关此案例的更多信息here。