sql >> Databasteknik >  >> RDS >> Mysql

SQL för att hitta den mest populära kategorin

Prova detta. använd grupp efter med namnet på kategorin. Jag har kommenterat den skapade at-satsen som du angav, du kan avkommentera den om du vill använda den.

 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;

du kommer att märka att jag inte använde nyckelordet JOIN utan istället filtrerade resultaten av frågan med hjälp av endast WHERE-satser, vilket kan vara lättare att förstå. om du vill lära dig mer om JOIN, här är en handledning .

Här är också en handledning om SQL-alias (AS-klausulen). Faktum är att det finns en massa fler handledningar på den här webbplatsen för en massa olika SQL-ämnen som inte är plattformsberoende.

redigera: fixat enligt kommentarer, lagt till abs-funktionen,



  1. Hur optimerar man SQL-frågan med att beräkna avstånd efter longitud och latitud?

  2. Få summan av MySQL-kolumnen i PHP

  3. Om du använder indexerade vyer och MERGE, läs detta!

  4. Hur skapar man en TRIGGER i SEQUELIZE (nodeJS)?