Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Show number of row in mysql select

Tags:

sql

mysql

I have this statement:

SELECT count(s.name), s.name, avg(a.rate),  @curRank := @curRank + 1 AS rank 
FROM `avatec_objects_comments` as a, avatec_objects as s, (SELECT @curRank := 0) r
WHERE a.oid =s.id and s.status=0 
GROUP BY s.name 
ORDER BY  avg(a.rate) desc, count(s.name) desc

This is my desired result (see numbers on side)

enter image description here

How can I set the rank like in the desired result above based on count(s.name) and avg(a.rate)?

like image 850
Sebastian Avatar asked Jan 23 '26 07:01

Sebastian


1 Answers

MySQL seems to have an issue with using variables with group by. The solution is to use a subquery. In addition, your query can be improved by using explicit join syntax:

SELECT cnt, name, avgrate,
       (@curRank := @curRank + 1) AS rank 
FROM (SELECT count(o.name) as cnt, o.name, avg(oc.rate) as avgrate, 
      FROM avatec_objects o JOIN
           avatec_objects_comments oc
           ON oc.oid = o.id 
      WHERE o.status = 0
      GROUP BY o.name
     ) oc CROSS JOIN
     (SELECT @curRank := 0) vars
ORDER BY  avgrate desc, cnt desc;
like image 165
Gordon Linoff Avatar answered Jan 25 '26 20:01

Gordon Linoff



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!