Získat maximální hodnotu GROUP BY dotazu bez poddotazu v MySQL

hlasů
1

Mám nějaké dotazy, které skupina souborů dat a spočítat, např

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

Nyní mám počet řádků, pro které columnje stejné, zatím je vše dobré.

Problém je, jak mohu získat agregát (min / max / průměr / součet) hodnoty pro tyto „skupinový“ počítá. použitím poddotazu, zda je nejjednodušší, ale mě napadlo, jestli je to možné v rámci tohoto jediného dotazu

Položena 26/08/2009 v 22:35
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
1

Pro mina maxmůžete ORDER BYa načíst první řádek. U sum/ avg/ jiných agregátů budete potřebovat poddotaz.

Odpovězeno 26/08/2009 v 22:38
zdroj uživatelem

hlasů
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 |

Myslím, že Knittl se snažil udělat něco takového:

select min(hits), max(hits), avg(hits), sum(hits)<br>
from table
group by date
Odpovězeno 05/05/2011 v 13:23
zdroj uživatelem

hlasů
0

V MySQL, měli byste být schopni to udělat všechno najednou. Mé testy naznačují, že to funguje.

| 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 a AVG také pracovat. Je to to, co jste hledali?

Odpovězeno 27/08/2009 v 03:09
zdroj uživatelem

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