Das Forentreffen 2018 findet am 20./21. April in Dresden statt. Weitere Infos hier
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

Postgres "row_number()" -> DbPosition()

Alles zum SQL-Dialekt

Moderator: Moderatoren

Antworten

Das Thema

interessiert mich
3
75%
interessiert mich NICHT
1
25%
ich kenne die Lösung
0
Keine Stimmen
 
Abstimmungen insgesamt: 4

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 10518
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Postgres "row_number()" -> DbPosition()

Beitrag von AUGE_OHR » Mi, 27. Mär 2013 5:10

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.
gruss by OHR
Jimmy

Antworten