mysql - 获取每日最受欢迎的产品 MySQL for Magento

标签 mysql magento

我需要一个包含每天销售的最受欢迎的产品的表格。所有数据都存储在Magento中,我使用MySQL来编写查询。我唯一需要的表是 Sales_flat_order_item 表。

最终表格应包含 3 列:日期产品 SKU 以及当天最受欢迎产品的售出单位数 - MaxQty.

我提出了适合我的查询,但我想知道如何改进它,因为我在代码中使用了两次相同的子查询:

1 从 sales_flat_order_item 中选择日期产品 IDSku数量 > - 子查询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/

相关文章:

javascript - 如何在 findAll 上的 node.js Sequelize 中具有多个关联/条件/包含

Magento 目录类别平面索引刷新企业版 1.13+

php - Magento 中订单完成后调用新的 php 函数

php - MAGENTO:清理 Exeption.log 和 System.log

mysql - 创建自定义多对多关联 - Ruby on Rails

mysql order by 性能优化

java - 如何访问多选条件元组查询中的连接列?

PHP PDO : Unable to connect, 目录名称无效

php - 为什么 Magento 在产品保存时使整页缓存失效实际上使页面未缓存以及由于未缓存而刷新会做什么

Magento : Get orders by specific payment method