Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

SQL para encontrar a categoria mais popular


tente isso. use group by com o nome da categoria. eu comentei a cláusula create at conforme você especificou, você pode descomentá-la se quiser usá-la.
 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;

você notará que não usei a palavra-chave JOIN, mas filtrei os resultados da consulta usando apenas cláusulas WHERE, que podem ser mais fáceis de entender. se você quiser saber mais sobre JOINs, aqui está um tutorial .

Aqui também está um tutorial sobre aliases SQL (a cláusula AS). na verdade, há muitos outros tutoriais neste site para vários tópicos SQL diferentes que não dependem da plataforma.

editar: corrigido conforme comentários, adicionado a função abs,