mysql table 的统计汇总

statistical aggregation over mysql table

在我的应用程序中,我有一个 table products_downloads,我在其中存储有关每个产品下载的信息。

这是这个table的结构:

在我的应用程序中,我有很多产品 TOP,其中我显示了按总下载量(所有时间)排序的最后 10 个产品和另一个按上周下载计数排序的产品(sql 查询执行时间减去7 天)

例如,在我的主页上,我需要显示我网站上所有产品的 TOP 产品下载。在某些产品类别中,我需要显示仅与该类别和所有后代类别相关的产品的产品下载量。

我觉得我需要执行一些周期性的数据聚合(超过 products_downloads table),但我现在不明白这个任务的正确解决方案是什么。也许是 OLAP?请指教

这类事情使用了以下基本模式

 SELECT COUNT(*) hit_count,
        product_id
  FROM products_downloads 
  WHERE whatever-condition
  GROUP BY product_id
  ORDER BY COUNT(*) DESC
  LIMIT 10

您想要的聚合很简单:COUNT(*)。诀窍是选择合适的 WHERE 条件。