【问题标题】:Sql query to display all products in order of their daily salesSql 查询按日销售额的顺序显示所有产品
【发布时间】:2016-08-20 19:17:25
【问题描述】:

我的零售 POS 应用程序中有 2 个简单的表。称为 products 和 product_sales。 product_sales 记录了不同订单中的所有销售额。我想显示一个页面,其中列出了我的所有产品,按销售额排序...

现在我想编写一个可以获取我所有产品的 SQL 查询……我认为左连接……可以显示该产品的所有销售额的总和……并将它们排序为 RANK,即最畅销的商品。

我是 SQL 的初学者……不知道该写什么。这是我尝试过但不起作用的方法。

SELECT DISTINCT p1.name,
                p1.id
FROM products p1
LEFT JOIN
product_sales p2
    ON p1.id = p2.product_id
ORDER BY SUM(p2.quantity)

【问题讨论】:

  • “销售”是指product_sales 表中的一条记录,还是销售数量列?
  • 能否附上数据样本?
  • 我尝试了一个答案,即您想对每种产品的数量求和。您应该包含示例数据,并且在您的代表级别上我会期望这一点。

标签: php mysql sql


【解决方案1】:
SELECT t1.name,
       COALESCE(t2.totalQuantity, 0)
FROM products t1
LEFT JOIN
(
    SELECT product_id, SUM(quantity) AS totalQuantity
    FROM product_sales
    GROUP BY product_id
) t2
    ON t1.id = t2.product_id
ORDER BY t2.totalQuantity DESC     -- show highest selling product first

【讨论】:

  • 太棒了!像魅力一样工作。我以前从未遇到过 COALESCE 和如此复杂的查询。需要更详细地探索 SQL。
猜你喜欢
  • 2010-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-20
  • 2015-09-16
相关资源
最近更新 更多