sql >> Base de Datos >  >> RDS >> Mysql

SQL para encontrar la categoría más popular

prueba esto. use group by con el nombre de la categoría. He comentado la cláusula created at como usted especificó, puede descomentarla si desea usarla.

 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;

Notará que no usé la palabra clave JOIN, sino que filtré los resultados de la consulta usando solo cláusulas WHERE, lo que podría ser más fácil de entender. si desea obtener más información sobre JOIN, aquí hay un tutorial .

Aquí también hay un tutorial sobre alias de SQL (la cláusula AS). de hecho, hay muchos más tutoriales en este sitio para un montón de diferentes temas de SQL que no dependen de la plataforma.

editar: corregido según los comentarios, se agregó la función abs,