German Zeile aus DB ausgeben, die bei 95% der Datensätze liegt

strupp01

Active Member
Licensed User
Longtime User
Ich habe ein Datenbank mit mehr als 16.000 Einträgen. Den Max-Wert habe ich schon ermittelt mit :

Hoechster_Druck_Ein = sql_PLD.ExecQuerySingleResult("SELECT Max(Druck_Ein) FROM PLD")

Jetzt möchte ich noch den Datensatz heraussuchen, der bei sortierten Werten bei 95 % liegt. Die Anzahl der Datensätze kann ich über

Zaehler_DB_PLD = sql_PLD.ExecQuerySingleResult("select count(*) as Druck_Ein from PLD")

ermitteln. Daraus kann ich mir den Datensatz bei 95% ermitteln

Dim Zaehler_DB_PLD As Int
Zaehler_DB_PLD = sql_PLD.ExecQuerySingleResult("select count(*) as Druck_Ein from PLD")

Wie aber bekomme ich die Datensätze sortiert und den Datensatz von 95% (Zaehler_DB_PLD) ausgelesen ?
 

strupp01

Active Member
Licensed User
Longtime User
Ich habe mal ein kleines Beispiel hochgeladen. Eine Test-DB ist mit dabei.
Die datenbank hat 14130 Zeilen.
Ich möchte die Datenbank nach der Spalte 'Druck_Ein' sortieren (aufsteigend) und dann die 13423 Zeile (95% der gesamtzeilen) in der Spalte 'Druck_Ein' aus lesen. In diesem Beispiel ist das der Wert 10.48.
Ich hoffe, ich habe mich klar ausgedrückt.

Gruss strupp01
 

Attachments

  • DB_Test_Ordner.zip
    112.3 KB · Views: 299

DonManfred

Expert
Licensed User
Longtime User
Ich hoffe, ich habe mich klar ausgedrückt.
Hört sich verständlich an.

Hört sich danach an als fehle Dir die WHERE Klausel im SQL im die Einträge zu Filtern.

Dein Projekt schaue ich mir später (heute Abend) an (bin im moment noch auf der Arbeit)....
 

strupp01

Active Member
Licensed User
Longtime User
Danke für deine Antwort. Du hast aber etwas falsch verstanden. Es soll die Spalte 'Druck_Ein ' aufsteigend sortiert werden. Danach soll aus der Zeile, die 95% der Gesamtzeilen sind (hier die Zeile 13423), die Spalte 'Druck_Ein' ausgegeben werden. Das Ergebnis, dass ausgegeben werden soll müßte 10.48 sein.
 

fredo

Well-Known Member
Licensed User
Longtime User
Hmmm. Also die ersten 95% der GesamtANZAHL der Datensätze:
B4X:
SELECT [PLD].[Druck_Ein]
FROM [PLD]
WHERE rowid < CAST((SELECT Max(ROWID) FROM [pld]) * 0.95 AS INT) -1
ORDER BY [PLD].[Druck_Ein]

Dann der erste Datensatz nach 95%:
B4X:
SELECT [PLD].[Druck_Ein]
FROM [PLD]
ORDER BY [PLD].[Druck_Ein]
LIMIT 1 offset CAST((SELECT Max(ROWID) FROM [pld]) * 0.95 AS INT)
 
Last edited:
Cookies are required to use this site. You must accept them to continue using the site. Learn more…