【发布时间】:2014-05-26 16:59:53
【问题描述】:
我不确定以前是否有人问过这个问题,因为我不知道如何最好地表达这个问题。
给定如下查询:
SELECT DATE_FORMAT(i.created, '%Y-%m') as 'period',
COUNT(id) as 'total',
i.company_id
FROM invoice i
GROUP BY period, i.company_id
ORDER BY period DESC, total DESC
如何返回按 company_id 分组的每月平均和/或平均计数?重要的是只计算实际有发票的那些时期。
【问题讨论】:
-
发布一些示例现有数据和预期输出。
-
您的查询目前无法使用索引来回答
GROUP BY和COUNT()(读取,在大型数据集上非常慢)。如果您有一个日历表(对于分析目的愚蠢很有用),您可以将其转换为来自子选择的范围查询 - 我显示了一个相关的变体 in this answer。请注意,通常最好避免按函数结果分组... -
@Clockwork-Muse 这很慢,我知道。但我只需要一个一次性查询。