Mailing List
Home
Forum Home
MySQL General - General MySQL discussion
MySQL++ - Programming with the C++ API to MySQL
MaxDB - Everything about MaxDB, formerly known as SAP DB
ODBC - ODBC with the MySQL Connector/ODBC driver
MySQL on Win32 - Runing MySQL on Windows 9x/Me/NT/2000/XP
Java Help - Mostly related to the MySQL Connector/J driver
Perl - Perl support for MySQL with DBI and DBD::mysql
GUI - MySQL GUI Tools
Announcement
Subjects
mysql openssl Question
ERROR 1045: Access denied for user: 'root@localhost ' (Using
password: NO)
Update one field with more fields from another table
Getting Identity after INSERT
ERROR 2002: Can 't connect to local MySQL server through socket
mysql test 4 1 fails with the gis test
MySQL Cluster Software
Downgrade Mysql from 4 to 3 23
Mysql 4 0 Oracle Stored Procedure Trigger Conversion
Can 't access mysql after kernel upgrade
Executing MySQL Commands From Within C Program
Comparing and writing out BLOBS
Preventing Duplicate Entries
FULLTEXT query format question
Strange behavior, Table Level Permission
Does the binary log enabling affect the MySQL performances?
mysql:it 's a db not a dbms how it 's possible?!
mysql have same function mthod as Oracle decode()
 
LIMIT within GROUP BY

LIMIT within GROUP BY

2007-10-05       - By Miroslav Monkevic

 Back
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/mysql?unsub=mysql@(protected)