单个SQL语句中的多个聚合

时间:2016-09-22 13:56:45

标签: mysql sql

我有一个大致具有以下结构的SQL表:

id | datetime | value
---------------------

我想要的是获得具有以下结构的结果:

id | value_avg_overall | value_avg_last_month | value_avg_last_week
-------------------------------------------------------------------

目前我正在使用JOIN,即构建类似于该查询的查询:

SELECT *
FROM (
    SELECT_OVERALL INNER JOIN SELECT_LAST_MONTH ON SELECT_OVERALL.id = SELECT_LAST_MONTH.id
    )
INNER JOIN SELECT_LAST_WEEK ON SELECT_LAST_WEEK.id = SELECT_LAST_MONTH.id;

我简化了查询以使其更具可读性,SELECT_*语句是使用SELECTGROUP BY的各个时间范围的简单AVG()语句。

这是执行多个聚合并在MySQL中的单个结果集中返回所有聚合的最有效方法吗?

2 个答案:

答案 0 :(得分:2)

这称为条件聚合:

$("input[field='" + myField + "']").focus(); 

答案 1 :(得分:0)

我相信你可以不加入就行。

SELECT id, AVG(value), AVG(IF(date BETWEEN x AND y, value, NULL)) FROM table GROUP BY id