Autor Zpráva
FireFox
Profil *
Ahoj,
nevíte prosím někdo jak říct příkazu GROUP BY, který řádek si má vybrat?

Příklad:

user_key id_clanku body
1a 1 44
2b 2 67
1a 4 34
1a 1 120
3d 14 12

Když teď provedu dotaz: SELECT `user_key`,`body, COUNT(*) as pocet_stejnych_clanku ` FROM `tahle_tabulka` GROUP BY `user_key`, `id_clanku`
Vypíše mi něco jako:

1a 44 2
1a 34 1
2b 67 1
3d 14 1


Což je skoro přesně to co potřebuju, jen bych nějak potřeboval říct tomu GOUP BY, že má vždycky vzít tu největší hodnotu z bodů.

Vím, že je to hrozně zmatený, ale ono to moc líp vysvětlit nejde, snažím se o vytvoření žebříčků a tohle je jedna z věcí na kterých jsem se zarazil.

Předem díky za odpovědi :)
juriad
Profil
V tomto případě ti stačí funkce MAX.
SELECT user_key, COUNT(*) AS pocet, MAX(body) AS maximum FROM tabulka GROUP BY user_key, id_clanku

Mimochodem, podle ANSI SQL (pokud je použito GROUP BY) smí být výsledkem dotazu jen sloupec uvedený v GROUP BY a výsledek agregační funkce aplikované na nějaký sloupec. Nesmíš tedy chtít body, ale můžeš chtít MAX(body). (Hodně zhruba řečeno.)
Ono to v MySQL projde, ale MsSQL už myslím ne. MySQL v takovém případě vrací myslím první řádek, na který narazí.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: