Obter o máximo valor de uma consulta GROUP BY sem subconsulta no MySQL

votos
1

eu tenho algumas consultas que grupo conjuntos de dados e contá-los, por exemplo,

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

agora eu tenho o número de linhas para o qual columné o mesmo, até aí tudo bem.

problema é: como faço para obter os valores agregados (min / max / avg / sum) para as contagens “agrupados”. usando uma subconsulta certeza é o mais fácil, mas eu queria saber se isso é possível dentro desta única consulta

Publicado 26/08/2009 em 22:35
fonte usuário
Em outras línguas...                            


3 respostas

votos
1

Para mine maxvocê pode ORDER BYbuscar a primeira linha. Para sum/ avg/ outros agregados você precisaria de uma subconsulta.

Respondeu 26/08/2009 em 22:38
fonte usuário

votos
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 |

Acho knittl estava tentando fazer algo como isto:

select min(hits), max(hits), avg(hits), sum(hits)<br>
from table
group by date
Respondeu 05/05/2011 em 13:23
fonte usuário

votos
0

No MySQL você deve ser capaz de fazer isso de uma só vez. Meus testes parecem indicar que isso funciona.

| 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 e AVG também funcionam. É isso que você está procurando?

Respondeu 27/08/2009 em 03:09
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more