如何显示每个产品的总订单销售额和产品相关信息。数据库服务器 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 中将 JOINproduction.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的主要内容,如果未能解决你的问题,请参考以下文章

如何创建查询以显示本周 sql 的每个日期的总销售额 [关闭]

数据分析——利用Excel分析某电商企业销售状况(干货)

如何将产品的订单金额汇总为一行

第十次作业:期末大作业

SQL语句统计每天、每月、每年的销售总额

MySQL学习_查看各仓库产品的销售情况_20161102