Diskuze: Jak vybírat průměrné hodnocení
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Tvůrce
Zobrazeno 8 zpráv z 8.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj,
co třeba si spočítat průměrný počet hodnocení na článek a použít to
místo té konstanty?
A nešlo by to takhle?
SELECT clanky.*, AVG(stars.pocet) AS pocet
FROM clanky
INNER JOIN stars ON clanky.ID_clanek=stars.id_clanku
WHERE clanky.datum <= CURDATE()
GROUP BY clanky.ID_clanek
ORDER BY AVG(stars.pocet) DESC, COUNT(stars.id_clanku) DESC
LIMIT 20
Funguje mi to takhle:
SELECT clanky.*, AVG(stars.pocet) AS pocet
FROM clanky
INNER JOIN stars ON clanky.ID_clanek=stars.id_clanku
WHERE clanky.datum <= CURDATE()
GROUP BY clanky.ID_clanek
HAVING COUNT(stars.id_clanku)>(SUM(stars.pocet)/COUNT(stars.pocet))
ORDER BY AVG(stars.pocet) DESC
LIMIT 20
Pokud se nepletu tak tvým filtrem projde článek s dvěma hodnoceními jednou hvězdičkou, zatímco článek hodnocený pětkrát pěti hvězdičkami neprojde. Takže si nejsem jistý jestli sem pochopil přesně o co ti původně šlo.
Zkusil jsem i tvůj filtr. Jenže to mi právě vybírá článek, který má jen dvě hodnocení s pěti hvězdami, takže když má článek přes 15 hodnocení a výsledek je dohromady kolem 4.3 tak je poměrně nízko.. To moje nastavení mi zatím vyhovuje, dává to podle mě dostatečně objektivní výsledky.
Ano můj návrh řeší jen seřazení v případě, že průměr je shodný, pak platí, že vícekrát hodnocený článek je výš.
Neber to tak, že rýpu nebo poučuju je to jen otázka mé vlastní zvědavosti, ale co mi nejde do hlavy je následující případ:
Podle mě by tedy první článek měl být v seznamu výše, protože má v podstatě lepší hodnocení, jak na známky, tak na množství uživatelů.
Tvůj dotaz ti, ale vrátí:
id_clanek | title | pocet |
2 | Druhý článek | 4,5 |
1 | První článek | 4,3333 |
Mám totiž divný pocit, že tohle není tak úplně objektivní seřazení.
Podívej se na tohle:http://www.evanmiller.org/…-rating.html
Zobrazeno 8 zpráv z 8.