* Urmas Buhvestov > I have MySQL database with data like > name points > a 20 > b 20 > c 19 > d 18 > e 18
use test; create table MyTable (name char(1), points int); insert into MyTable values ('a',20),('b',20),('c',19),('d',18),('e',18); > is it possible to get with mysql commands ONLY outpt > > place repeatings name points > 1 2 a 20 > 1 2 b 20 > 3 1 c 19 > 4 2 d 18 > 4 2 e 18 > > </pre> > first column shows how many persons have beter points +1 > second column shows how many records have same number of points Try a self join. This will only work on a small amount of data, because each row is joined with every other row in the table with higher or same score. This will take a lot of time on a big table. If this becomes a problem for you, try adding a WHERE clause limiting the number of rows examined, for instance "WHERE t1.points > 15". select sum(t2.points>t1.points)+1 place, sum(t2.points=t1.points)+1 repeatings, t1.name, t1.points FROM MyTable t1 LEFT JOIN MyTable t2 ON t2.name <> t1.name AND t2.points >= t1.points GROUP BY t1.name,t1.points ORDER BY t1.points DESC; +-------+------------+------+--------+ | place | repeatings | name | points | +-------+------------+------+--------+ | 1 | 2 | a | 20 | | 1 | 2 | b | 20 | | 3 | 1 | c | 19 | | 4 | 2 | d | 18 | | 4 | 2 | e | 18 | +-------+------------+------+--------+ 5 rows in set (0.00 sec) HTH, -- Roger --------------------------------------------------------------------- Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive) To request this thread, e-mail <[EMAIL PROTECTED]> To unsubscribe, e-mail <[EMAIL PROTECTED]> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php