Seite 1 von 1

Postgres "row_number()" -> DbPosition()

Verfasst: Mi, 27. Mär 2013 5:10
von AUGE_OHR
hi,

Ich habe einen vertikalen Schrollbar zur Anzeige eines PostgreSQL Browse vorgesehen.

Problem : es gibt kein DbPosition() was man für eine Berechnung benötigen würde für ein Scrollbar

ich habe dann versucht per Thread / Array / "__record" was zu basteln aber das "umschaufeln" bei > 500000 dauert viel zu lange :banghead:

Lösung : ab der Version v9.x hat PostgreSQL die Function "row_number()" ( und viele nette neue Function gegenüber der v8.x s.h. "MOVE / Offset")
number of the current row within its partition, counting from 1
aber da gibt es noch eine "Beschränkung" bei der "Anwendung"
9.19. Window Functions***
***english Version 9.1.4

The built-in window functions are listed in Table 9-44. Note that these functions must be invoked
using window function syntax; that is an OVER clause is required.
In addition to these functions, any built-in or user-defined aggregate function can be used as a window
function (see Section 9.18 for a list of the built-in aggregates). Aggregate functions act as window
functions only when an OVER clause follows the call; otherwise they act as regular aggregates.
aha ... man benötigt also OVER ... und wie ?

Code: Alles auswählen

    test=*# select col1, col2, row_number() over (order by col1) from ohr order by col1;
    test=*# select col1, col2, row_number() over (order by col1) from ohr order by col2;
    test=*# select col1, col2, row_number() over (order by col2) from ohr order by col1;
    test=*# select col1, col2, row_number() over (order by col2) from ohr order by col2;
so nun hab ihr den entscheiden Hinweis.

Wer "mehr" dazu wissen will will möge bitte an der Abstimmung teilnehmen, Danke ... Lösung erst ab 10 Interessenten ;)
p.s. wer meint er kenne die Lösung darf sie hier gerne vorher veröffentlichen.