Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQL, um die beliebteste Kategorie zu finden

Versuche dies. verwenden Sie group by mit dem Namen der Kategorie. Ich habe die Klausel created at auskommentiert, wie Sie angegeben haben, Sie können sie auskommentieren, wenn Sie sie verwenden möchten.

 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;

Sie werden feststellen, dass ich das JOIN-Schlüsselwort nicht verwendet habe, sondern stattdessen die Ergebnisse der Abfrage nur mit WHERE-Klauseln gefiltert habe, was möglicherweise einfacher zu verstehen ist. Wenn Sie mehr über JOINs erfahren möchten, finden Sie hier ein Tutorial .

Hier ist auch ein Tutorial zu SQL-Aliassen (die AS-Klausel). Tatsächlich gibt es auf dieser Seite eine Menge weiterer Tutorials für eine Reihe verschiedener SQL-Themen, die nicht plattformabhängig sind.

Bearbeiten: gemäß den Kommentaren behoben, abs-Funktion hinzugefügt,