如何显示每个产品的总订单销售额和产品相关信息。数据库服务器 2014
Posted
技术标签:
【中文标题】如何显示每个产品的总订单销售额和产品相关信息。数据库服务器 2014【英文标题】:How to display sum of total order sales per product and product related information. Sql Server 2014 【发布时间】:2020-10-30 15:36:46 【问题描述】:我是 Sql Server 的初学者。我面临一个问题。我确实有一些基于外键[下面的图片链接]相互关联的表。现在我想显示每个产品的产品名称、产品类别名称和总销售订单。但是当用户点击按钮或链接时,用户将看到前 10 个最畅销的产品,然后在下一次点击时用户将看到接下来的 10 个产品。
Table structure
这是代码,我试过了。我很困惑要代替 ?? 的列。
select p.product_name, c.category_name, ??
from production.products as p
inner join production.categories as c on p.category_id = c.category_id
order by ?? desc;
【问题讨论】:
“但是当用户点击按钮或链接时,用户将看到前 10 个最畅销的产品,然后在下一次点击时,用户将看到接下来的 10 个产品。” 那是应用程序逻辑,不是 SQL。 RDBMS 应该将整个数据集返回给应用程序,然后它应该根据“页面”显示该数据集中的适当行。 查看聚合函数和表连接。 另外,您在上述 SQL 中将JOIN
到 production.categories
两次,并且两次都给它相同的别名 (c
)。别名在其定义的范围内必须是唯一的。
【参考方案1】:
根据您的表结构,我得出了这个解决方案。
select p.product_name, c.category_name, sum(o.quantity * o.list_price * o.discount) as total_sale_per_product
from sales.order_items o
inner join production.products p on o.product_id = p.product_id
inner join production.categories c on p.category_id = c.category_id
group by p.product_name, c.category_name order by total_sale_per_product desc
offset 0 rows fetch next 10 rows only;
假设您正在开发 Web 应用程序,通过 url [查询字符串是更好的选择] 传递偏移行并获取行。
【讨论】:
以上是关于如何显示每个产品的总订单销售额和产品相关信息。数据库服务器 2014的主要内容,如果未能解决你的问题,请参考以下文章