Vážený průměr v MySQL

Dnes jsem potřeboval vytáhnout z databáze průměrné hodnocení článků, ovšem s tím, že hodnocení registrovaných uživatelů má trojnásobnou váhu než uživatelé neregistrovaní. Nakonec jsem skončil u následujícího skriptu, který se mi zdá být nejjednodušší a také nejrychlejší na zpracování. Pomocí IF ověřím, jestli je uživatel registrovaný, pokud ano započítám jeho hodnocení za trojnásobek, všechna tato hodnocení sečtu a následně vydělím součtem vah. Je trochu s podivem, že funkce AVG() pro průměr zde vůbec není využita. Pokud máte lepší řešení, podělte se o něj v komentářích.

SELECT ROUND( 
     sum( 
          IF( h.userId IS NOT NULL , 3 * rating, rating )
     ) / sum(
          IF( h.userId IS NOT NULL , 3, 1 )
     )
, 2 ) 
FROM hodnoceni h WHERE ...

Žádné příbuzné články.

This entry was posted in Webdesign. Bookmark the permalink. Follow any comments here with the RSS feed for this post. Trackbacks are closed, but you can post a comment.

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>