in reply to Ranking position in a SQL index

You might have to ORDER BY and then loop through all the rows in your application.

Maybe check out the HAVING keyword. As I recall it is something like adding a WHERE clause after the grouping and ordering but I'm not 100% sure.

Replies are listed 'Best First'.
Re^2: Ranking position in a SQL index
by pg (Canon) on Oct 05, 2004 at 04:13 UTC

    Having is kind of like where, but only works with group by. It allows you to pick up groups that meets the criterias defined in having.

    But having does not give you order, nor does group by. Although most of the DBMS systems actually do sorting for group by, it is not required by SQL standard, so unless it is clearly stated in document, don't assume it does the ordering.

    For example, oracle does not always sort group by, but sometime it sorts. You will see this, when you do explain. Oracle will tell you whether it is 'sorted group by' or just a 'group by'. But this is not controled by you, so in Oracle, you still have to order by after group by, to ensure the ordering is really there. This does not degrade the performance, as Oracle will skip the order by silently, if the group by is 'sorted'.

Re^2: Ranking position in a SQL index
by Anonymous Monk on Oct 05, 2004 at 04:07 UTC
    Well I think in the worst case I could confine the problem to an O(log N) binary search via the LIMIT clause, but I'm hoping for an O(1) solution.