2

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

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

现在我有相同的行数column,到目前为止一切都很好。

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

4

3 回答 3

1

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

于 2009-08-26T21:38:26.380 回答
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 也可以。这是你想要的?

于 2009-08-27T02:09:37.870 回答
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
于 2011-05-05T12:23:21.127 回答