MySQL返回Group By Functions表?

时间:2014-10-26 03:29:34

标签: mysql sql analytics

我的目标是了解平均数据块的平均变化是如何被切断的。我有一个返回一组平均值的基本查询:

SELECT AVG(col1), AVG(col2), AVG(col3), COUNT(*)
FROM table
WHERE col1 > 100;

在概念上,我想改变WHERE子句,从而得到一个结果表:

SELECT AVG(col1), AVG(col2), AVG(col3), COUNT(*)
FROM table
WHERE col1 > 100;

SELECT AVG(col1), AVG(col2), AVG(col3), COUNT(*)
FROM table
WHERE col1 > 200;

除了许多条件,这只返回最后一行。如何迭代以获得多组平均值?

1 个答案:

答案 0 :(得分:3)

您可以通过创建截止值表来完成此操作。类似的东西:

select c.cutoff, avg(t.col1), avg(t.col2), avg(t.col3), count(*)
from (select 100 as cutoff union all
      select 200
     ) c left join
     table t
     on t.col1 > c.cutoff
group by c.cutoff;