我有一些查询将数据集分组并计算它们,例如
SELECT COUNT(*)
FROM `table`
GROUP BY `column`
现在我有column
相同的行数,到目前为止还不错。
问题是:如何获得那些“分组”计数的聚合(最小/最大/平均/总和)值。使用子查询肯定是最简单的,但我想知道这是否可能在这个单一查询
答案 0 :(得分:1)
对于min
和max
,您可以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