Hello, 

May be this is some idea:
GROUP_CONCAT is a built-in aggregate function, that efficiently returns a list 
(as text) of items in each group. If you add ORDER By (before the group by) it 
also arranges the ordering. But it does not let you restrict the number of 
elements in each group, to only the top-N. I thought may be SUBSTR is a further 
solution. The use of LIMIT would be more elegant but I don't see how.

is a TopN function planned for the future version of sqlite?
?

Edzard Pasma

--- sylvain.point...@gmail.com wrote:

From: Sylvain Pointeau <sylvain.point...@gmail.com>
To: sqlite-users@sqlite.org
Subject: [sqlite] having the Top N for each group
Date: Sat, 14 Feb 2009 09:21:15 +0100

Hello all,
I am wondering if we have a method faster then the INNER JOIN which
can be very slow in case of large number of rows, which is my case.
I was thinking of a UDF that increment a number if the concatenation of the
key column (or group columns) is the same, means:
select col1, col2, udf_topN(col1||col2) from TTT order by value group by
col1,col2

will result into

1,1,1
1,1,2
1,1,3
2,1,1
2,1,2
2,1,3
4,3,1
4,3,2
etc


however I don't really find how to keep, initialize, and destroy a variable
in a UDF for a query time execution

do you have some idea?
is a TopN function planned for the future version of sqlite?

Many thanks,
Sylvain
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to