Sequelize 获得最畅销的产品 / "most apperance of relation"
Sequelize get most sold products / "most apperance of relation"
我遇到了与这里描述的类似的问题:
https://dba.stackexchange.com/questions/52476/how-to-get-a-list-result-of-best-selling-items
我的 order_items table 看起来像:
orderID
productID
quantity
1
5
7
3
4
8
1
2
3
and
so
on
我正在尝试使用 Sequelize 获得最畅销的产品,我用 sequelize 定义了 'products' table 和 'order_items' table 之间的关系。
并获得被引用次数最多的产品(出现次数最多的产品,与数量无关)。
要获取列的最大值,您可以使用:
const mostSold = await order_items.findOne({
attributes: [[sequelize.fn('max', sequelize.col('quantity')), 'quantity']]
}).getProduct();
要获得最多的发生率,您可以使用:
const mostOccurring = await order_items.findOne({
attributes: [[sequelize.fn('count', sequelize.col('productID')), 'productId']]
}).getProduct();
感谢 Finding sum and grouping in sequelize 调用函数作为 attirubte
我做了一些修改,包括产品编号、订单和限制
对于大多数推荐产品(唯一销售):
async function getUniqueBestSelling(limit: number) {
const res = await database.model("order_items").findAll({
attributes: [
"productId",
[sequelize.fn("count", sequelize.col("productId")), "totalOrders"],
],
group: ["productId"],
include: [{ model: database.model("products") }],
order: [[sequelize.col("totalOrders"), "DESC"]],
limit: limit,
});
const plainRes = getPlainRes(res);
return plainRes;
}
总销售额(数量)
async function getBestSelling(limit: number) {
const res = await database.model("order_items").findAll({
attributes: [
"productId",
[sequelize.fn("sum", sequelize.col("quantity")), "totalQuantity"],
],
group: ["productId"],
include: [{ model: database.model("products") }],
order: [[sequelize.col("totalQuantity"), "DESC"]],
limit: limit,
});
const plainRes = getPlainRes(res);
return plainRes;
}
我遇到了与这里描述的类似的问题: https://dba.stackexchange.com/questions/52476/how-to-get-a-list-result-of-best-selling-items
我的 order_items table 看起来像:
orderID | productID | quantity |
---|---|---|
1 | 5 | 7 |
3 | 4 | 8 |
1 | 2 | 3 |
and | so | on |
我正在尝试使用 Sequelize 获得最畅销的产品,我用 sequelize 定义了 'products' table 和 'order_items' table 之间的关系。
并获得被引用次数最多的产品(出现次数最多的产品,与数量无关)。
要获取列的最大值,您可以使用:
const mostSold = await order_items.findOne({
attributes: [[sequelize.fn('max', sequelize.col('quantity')), 'quantity']]
}).getProduct();
要获得最多的发生率,您可以使用:
const mostOccurring = await order_items.findOne({
attributes: [[sequelize.fn('count', sequelize.col('productID')), 'productId']]
}).getProduct();
感谢 Finding sum and grouping in sequelize 调用函数作为 attirubte 我做了一些修改,包括产品编号、订单和限制
对于大多数推荐产品(唯一销售):
async function getUniqueBestSelling(limit: number) {
const res = await database.model("order_items").findAll({
attributes: [
"productId",
[sequelize.fn("count", sequelize.col("productId")), "totalOrders"],
],
group: ["productId"],
include: [{ model: database.model("products") }],
order: [[sequelize.col("totalOrders"), "DESC"]],
limit: limit,
});
const plainRes = getPlainRes(res);
return plainRes;
}
总销售额(数量)
async function getBestSelling(limit: number) {
const res = await database.model("order_items").findAll({
attributes: [
"productId",
[sequelize.fn("sum", sequelize.col("quantity")), "totalQuantity"],
],
group: ["productId"],
include: [{ model: database.model("products") }],
order: [[sequelize.col("totalQuantity"), "DESC"]],
limit: limit,
});
const plainRes = getPlainRes(res);
return plainRes;
}