我需要一个包含每天销售的最受欢迎的产品的表格。所有数据都存储在Magento中,我使用MySQL来编写查询。我唯一需要的表是 Sales_flat_order_item
表。
最终表格应包含 3 列:日期
、产品 SKU
以及当天最受欢迎产品的售出单位数 - MaxQty
.
我提出了适合我的查询,但我想知道如何改进它,因为我在代码中使用了两次相同的子查询:
1 从 sales_flat_order_item
中选择日期
、产品 ID
、Sku
和 数量
> - 子查询1
2 从子查询1
- 子查询2中选择日期
和最大数量
3 将它们连接在一起,知道日期应该相同,并且子查询 1 中的数量应该等于子查询 2 中的最大数量
SELECT DATE( sq2.created_at ) AS CreatedAt, sq0.sku AS SKU, sq2.MaxQty
FROM (
SELECT created_at, product_id, sku, SUM( qty_ordered ) AS qty
FROM `sales_flat_order_item`
GROUP BY DATE( created_at ) , product_id
) AS sq0
JOIN (
SELECT sq.created_at, MAX( sq.qty ) AS MaxQty
FROM (
SELECT created_at, product_id, SUM( qty_ordered ) AS qty
FROM `sales_flat_order_item`
GROUP BY DATE( created_at ) , product_id
) AS sq
GROUP BY DATE( sq.created_at )
) AS sq2 ON DATE( sq2.created_at ) = DATE( sq0.created_at )
AND sq2.MaxQty = sq0.qty
GROUP BY DATE( CreatedAt )
最佳答案
我相信这应该能达到你想要的效果。
我添加了一个 WHERE
子句,仅在本月运行它,以防您有一个巨大的数据库,所以它不会花费太多时间。
SELECT day, sku, MAX(qty_total) AS qty FROM (
SELECT DATE(created_at) AS day, sku, SUM(qty_ordered) AS qty_total
FROM `sales_flat_order_item`
WHERE created_at > '2015-07%'
GROUP BY sku, day
ORDER BY qty_total DESC
) AS item_count
GROUP BY day
关于mysql - 获取每日最受欢迎的产品 MySQL for Magento,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31713006/