在mySQL中获取没有子查询的GROUP BY查询的最大值

时间:2009-08-26 21:35:39

标签: mysql group-by aggregate

我有一些查询将数据集分组并计算它们,例如

  SELECT COUNT(*)
    FROM `table`
GROUP BY `column`

现在我有column相同的行数,到目前为止还不错。

问题是:如何获得那些“分组”计数的聚合(最小/最大/平均/总和)值。使用子查询肯定是最简单的,但我想知道这是否可能在这个单一查询

3 个答案:

答案 0 :(得分:1)

对于minmax,您可以ORDER BY并获取第一行。对于sum / avg /其他聚合,您需要一个子查询。

答案 1 :(得分:0)

在MySQL中,您应该能够立即执行此操作。我的测试似乎表明这是有效的。

| date       | hits |
|-------------------|
| 2009-10-10 |    3 |
| 2009-10-10 |    6 |
| 2009-10-10 |    1 |
| 2009-10-10 |    3 |
| 2009-10-11 |   12 |
| 2009-10-11 |    4 |
| 2009-10-11 |    8 |
 -------------------

SELECT COUNT(*), MAX(hits), SUM(hits) FROM table GROUP BY date

| COUNT(*)  | MAX(hits) |
|-----------|-----------|
|        4  |         6 |
|        3  |        12 |
 -----------------------

SUM,MIN和AVG也有效。这是你在找什么?

答案 2 :(得分:0)

| date       | hits |
|-------------------|
| 2009-10-10 |    3 |
| 2009-10-10 |    6 |
| 2009-10-10 |    1 |
| 2009-10-10 |    3 |
| 2009-10-11 |   12 |
| 2009-10-11 |    4 |
| 2009-10-11 |    8 |

我认为knittl正试图做这样的事情:

select min(hits), max(hits), avg(hits), sum(hits)<br>
from table
group by date