RDBMS で任意のレコードが、指定した条件、順序の時に何番目になるかを調べる SQL 文について

SELECT * FROM a_table WHERE condition ORDER BY a, b DESC, c

の場合は、ID の a,b,c の値をそれぞれ an, bn, cn とした時、
前からの位置 n
{n| 0 <= n < (SELECT COUNT(*) FROM a_table)}は

SELECT COUNT(*) AS n FROM a_table WHERE
 condition AND
 (
   (a < an) OR
   (a = an AND b > bn) OR
   (a = an AND b = bn AND c < AS cn )
 ) — … (A)

の結果となる。
 
例:

NO: 0 1 2 3 4 5 6 7 8 9 10 11
ID: 0 1 3 5 7 9 10 11 15 20 21 23
 a: 1 1 1 1 2 2 2 2 3 3 3 3
 b: 4 4 2 0 3 2 1 1 4 3 3 3
 c: 0 1 0 2 3 3 2 3 2 3 3 4

テーブルの内容が上記の NO を除いた ID, a, b, c を属性として持ち
検体の ID が 10 の時
a < an を満たす要素は an == 2 なので 4 個 ..(1)
a = an AND b > n を満たす要素は bn == 1 なので 2 個 ..(2)
a = an AND b = bn AND c < AS cn を満たす要素は cn == 2 なので 0 個 ..(3)
全ての計算は排他なので (A) の結果は (1)+(2)+(3) = 6
これは 0 番目から数えた時の 位置 NO に一致する。