I tried.
Then I get:
###############
person_id points
1 34
2 49
2 46
2 37
3 42
3 35
3 24
################
instead of desired:
################
person_id points
1 34
1 33
1 33
2 49
2 46
2 37
3 42
3 35
3 24
################
I've been playing with JOIN also. It does not work because of the same
problem:
################
SELECT R1.person_id, R1.points, COUNT(*) AS higher
FROM results AS R1
JOIN results AS R2 ON R1.person_id=R2.person_id AND R1.points <= R2.points
GROUP BY R1.person_id, R1.points
HAVING higher <=3
ORDER BY R1.person_id, R1.points DESC
person_id points higher
1 34 1
2 49 1
2 46 2
2 37 3
3 42 1
3 35 2
3 24 3
###################
Baron Schwartz wrote:
Change the > to >= and the < to <= to deal with this.
Baron
Miroslav Monkevic wrote:
Thanks Baron, great advice (as always).
My real query is a bit more complicated but speaking in terms of
example I provided, I took this path:
####################
create table results
(
person_id int(11),
points int(11)
);
insert into results values(1, 34);
insert into results values(1, 33);
insert into results values(1, 33);
insert into results values(1, 33);
insert into results values(2, 49);
insert into results values(2, 37);
insert into results values(2, 46);
insert into results values(2, 27);
insert into results values(3, 42);
insert into results values(3, 24);
insert into results values(3, 35);
insert into results values(3, 18);
SELECT points
FROM results
WHERE
(
SELECT count(*)
FROM results as R
WHERE R.person_id = results.person_id AND R.points > results.points
) <3
ORDER BY person_id, points DESC
person_id points
1 34
1 33
1 33
1 33
2 49
2 46
2 37
3 42
3 35
3 24
####################
As you can see limiting does not work if there are record with the
same amount of points. I haven't found any solution yet.
Baron Schwartz wrote:
Hi,
Miroslav Monkevic wrote:
Hello,
MySQL 4.1
I have query:
SELECT SUM(points) as ranking FROM results GROUP BY person_id ORDER
BY ranking DESC
My goal is to sum 7 greatest results for each person.
In more general, my question is: is there a way to limit number of
records within groups in "group by" query.
Try this:
http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/
Cheers
Baron
--
Best regards,
Miroslav Monkevic
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]