Autor Zpráva
svast
Profil
Zdravím, potřeboval bych spočítat data ze dvou sloupců tabulky. Jde o komentáře uživatelů k jednotlivým článkům, tzn. V prvním sloupci mám číslo označující jednotlivé články, které se může opakovat např. (1,1,2,3,3,3,4,5,5, ...) a ve druhém je hodnocení (1-5) těchto článků od uživatelů např. (2,3,4,3,5,2,1,2,4 ....), takže ku článku 3 patří hodnocení 3,5,2. Nevím jak zobrazit výsledek, který by mi spočítal průměrné hodnocení ke konkrétnímu článku (u č.3 by se tedy zobrazilo 3,33). Díky
TomasJ
Profil
Kód jsem kvůli zbytečnosti smazal, viz. [#5].
Tori
Profil
svast:
Koukněte se, jak se používá sql funkce SUM() AVG() v kombinaci s GROUP BY.
Odkazy na zdejší diskusi, linuxsoft.

Edit: Doufám tedy, že jsem správně pochopila, že ID článků a jejich hodnocené je každé v samostatném řádku, tedy
ID | hodnocení
 1 | 2
 1 | 3
 2 | 4
 3 | 3


Edit2 (neodolala jsem):
Ad „ku článku“: O používání "ku" místo "k" doporučuji k přečtení krátký článeček ze zajímavého časopisu Naše řeč, roč.1926.
Bertram
Profil
zvolil bych:
SELECT clanek,sum(hodnoceni)/count(*) as prumerne_hodnoceni FROM tabulka GROUP BY clanek 
TomasJ
Profil
Tori, Bertram:
Asi máte pravdu, proč to dělat složitě ([#2]), když to jde jednoduše ([#3],[#4]) :)
O této funkci jsem absolutně netušil.
EDIT: No vlastně já si to blbě přečetl. Měl jsem za to, že u článku je hodnocení zapsáno za sebou a odděleno ",". Proto jsem psal ten script...
Bertram
Profil
Ještě lépe:
SELECT clanek,avg(hodnoceni) as prumerne_hodnoceni FROM tabulka GROUP BY clanek
svast
Profil
Tak už to celkem funguje díky všem.
Tori: pochopila jste správně, jedno id a jedno hodnocení na řádku. Jinak dík za odkazy a poučení :-)
Bertram: tohle je přesně ono, už jsem to řešil nějakou dobu předtím, ale měl jsem chybu jinde. Jen ještě řeším problém, pokud nejde o celá čísla. AVG (stejně jako SUM) mi totiž číslo 2,5 počítá jako 2, takže ten průměr vychází jinak.
Kajman_
Profil *
Jen ještě řeším problém, pokud nejde o celá čísla


Neukládejte čísla do typu varchar! Použijte decimal případně float.
svast
Profil
Kajman:
Zkoušel jsem oba, ale problém to neřeší.
Například čísla 2,5 ;4 ;4 ;5 mi to sčítá 3,75
Kajman_
Profil *
jste si jistý ze máte dobře uloženo 2.5?
svast
Profil
Samozřejmě jsem měl uloženo 2,5
Funguje to, díky za pomoc.

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:

0