Mysql
 sql >> Database >  >> RDS >> Mysql

SQL per trovare la categoria più popolare

prova questo. usa raggruppa per con il nome della categoria. ho commentato la clausola creata in come hai specificato, puoi decommentarla se vuoi 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;

noterai che non ho usato la parola chiave JOIN ma ho invece filtrato i risultati della query usando solo le clausole WHERE, che potrebbero essere più facili da capire. se vuoi saperne di più sui JOIN, ecco un tutorial .

Anche qui c'è un tutorial sugli alias SQL (la clausola AS). in effetti, ci sono molti altri tutorial su questo sito per un sacco di diversi argomenti SQL che non dipendono dalla piattaforma.

modifica: corretto come da commenti, aggiunta la funzione abs,