我必须创建一个MySQL函数,该函数接收一个索引并返回该索引中按利润排序的商店名称。如何设置功能?
这是我根据利润订购商店的查询,这是所售商品的总和乘以库存数量。
SELECT name, (SUM(price * quantity)) AS TotalPrice
FROM Items NATURAL JOIN Inventory
GROUP BY name
ORDER BY (TotalPrice) DESC;
模式:
库存(名称:字符串,项目:字符串,数量:整数)
Items(item:String,brand:String,price:double)
错误:使用的Select语句具有不同的列数。
我应该能够返回第n家最赚钱的商店。我有MySQL命令,可以按顺序创建视图,但是我不知道如何返回有序表的索引。这不是家庭作业,只需复习考试即可。
答案 0 :(得分:0)
我能够创建一个过程,而不是一个函数,它可以通过以下代码为我提供所需的结果:
DELIMITER |
CREATE PROCEDURE m2(IN N INTEGER)
BEGIN
SELECT name, (SUM(price * quantity)) AS Total_Profit
FROM Items JOIN
Inventory
USING (item)
GROUP BY name
ORDER BY Total_Profit DESC
LIMIT N, 1;
END |
答案 1 :(得分:-1)
您可以使用OFFSET
和LIMIT
获得列表中的第n个项目:
SELECT name, (SUM(price * quantity)) AS TotalPrice
FROM Items JOIN
Inventory
USING (item)
GROUP BY name
ORDER BY TotalPrice DESC
OFFSET <n - 1> LIMIT 1
因此,对于第三项,应该是:
OFFSET 2 LIMIT 1
请注意,我删除了NATURAL JOIN
。我建议不要使用NATURAL JOIN
,因为代码不会显示JOIN
键(因此容易出错),并且因为它们没有考虑正确声明的外键关系。