mysql表上的统计聚合

Posted

技术标签:

【中文标题】mysql表上的统计聚合【英文标题】:statistical aggregation over mysql table 【发布时间】:2015-11-28 19:15:30 【问题描述】:

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

这是这个表的结构:

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

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

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

以上是关于mysql表上的统计聚合的主要内容,如果未能解决你的问题,请参考以下文章

MySQL聚合函数

如何根据使用 dplyr 的组上的聚合函数计算新列(在汇总统计信息上添加汇总统计信息)?

Mysql分表之后的聚合统计

Spark 上的 Hive 不返回聚合或连接查询的结果

MySQL划重点-查询-聚合

为每个提取的记录在其他表上计算聚合 - 性能