从数据库中确定最有利可图的商店的功能

时间:2019-04-23 22:22:52

标签: mysql sql database function

我必须创建一个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命令,可以按顺序创建视图,但是我不知道如何返回有序表的索引。这不是家庭作业,只需复习考试即可。

2 个答案:

答案 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)

您可以使用OFFSETLIMIT获得列表中的第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键(因此容易出错),并且因为它们没有考虑正确声明的外键关系。