max je agregacna funkcia, rovnako ako min, avg, sum a podobne. cize z nejakej skupiny riadkov vyberie maximalnu hodnotu z daneho stlpca. kedze ale v selecte je este group by na stlpec s mailom, tak vyberie vzdy maximalnu hodnotu pre urcenu skupinu mailov.
priklad: mas tabulku T1 a v nej stlpec mail a cislo. v tabulke su 4 riadky nasledovne:
abc@abc.sk | 1
abc@abc.sk | 2
dfe@dfe.sk | 3
dfe@dfe.sk | 4
ak by som spravil select
select max(cislo) from t1;
vrati mi to len 4
ak ale dam select mail, max(cislo) from t1 group by mail;
vrati mi to
abc@abc.sk | 2
dfe@dfe.sk | 4
Inak napadol ma este jeden select pre to tvoje riesenie a to take, ze by vratil vzdy posledny registrovany riadok pre kazdy mail:
select address_book_id, entry_company, entry_state from address_book where address_book_id in (select max(address_book_id) from address_book group by entry_state);