Mysql
 sql >> Base de données >  >> RDS >> Mysql

SQL pour trouver la catégorie la plus populaire

essaye ça. utilisez group by avec le nom de la catégorie. j'ai commenté la clause created at comme vous l'avez spécifié, vous pouvez la décommenter si vous souhaitez l'utiliser.

 SELECT c.name, SUM(ABS(v.item_id)) 
 FROM categories c,items i, votes v
 WHERE c.name = i.name
    AND i.item_id=v.item_id
    --AND v.created_at > #{1.week.ago}
 GROUP BY c.name 
 ORDER BY SUM(ABS(v.item_id)) DESC LIMIT 5;

vous remarquerez que je n'ai pas utilisé le mot clé JOIN mais que j'ai plutôt filtré les résultats de la requête en utilisant uniquement des clauses WHERE, ce qui pourrait être plus facile à comprendre. si vous voulez en savoir plus sur les JOINs, voici un tutoriel .

Voici aussi un tutoriel sur les alias SQL (la clause AS). en fait, il existe un tas d'autres tutoriels sur ce site pour un tas de sujets SQL différents qui ne dépendent pas de la plate-forme.

modifier : corrigé selon les commentaires, ajout de la fonction abs,