errechnen eines mittelwertes vom jdbc rSet

Status
Nicht offen für weitere Antworten.

kubi

Mitglied
hallo leute!

ich vor laaanger zeit mal ein problem gepostet, welches wieder aktuell ist.

ich wollte ein zeitfenster bauen, fuer das werte aus meiner db gemittelt werden.

ich hab also 2 spalten, von denen eine die zeit, die andere die zu mittelnden werte speichert.

ueber die zeit-spalte soll ein 60s fenster laufen und alle werte innerhalb dieses zeitfensters mitteln.

ich habe folgenden code soweit geschrieben und bin nun stecken geblieben.

vieleicht kann mir da jemand den noetigen durchblick vermitteln. DANKE!


Code:
try{
            Statement s = con.createStatement();
            s.executeQuery("Select ttime, simTime from ttbylink WHERE link = '1:2'");
            ResultSet rs = s.getResultSet();
            while(rs.next()){
                oneRow.add(rs.getFloat("ttime"));
                oneRow.add(rs.getFloat("simTime"));
                rows.add(oneRow);
            }
            int minute = 1;
            int index = 1;
            Float Time1 = oneRow.get(index);
            Float AggVal = oneRow.get(index-1);
            Float Value;
            Float Time;
            
            Vector<Float> vValue = new Vector<Float>();
            
            for(int i=0; i<oneRow.size(); i++){
                Time = oneRow.get(index);
                Value = oneRow.get(index-1);
                vValue.add(Value);
                int maxValuesVector;
                double meanValue = 0;
                                  
                    for(int j=0; j<vValue.size(); j++){
                        meanValue += vValue.get(j);
                        if(Time<Time1+(minute*60)){
                        meanValue /= vValue.size();
                        System.out.println(meanValue);
                        }
                    
                   else{
                    minute = minute +1;
                    AggVal = Value;
                    System.out.println("####");
                    }
                    index = index +2;
            }                   
        }            
        rs.close();
        s.close();
        }
        catch(Exception e){
            System.out.println("Error" + e);
      }
 

kubi

Mitglied
hi andré

sorry fuer die etwas sehr wage beschreibung.

ich hab mein resulset in eine arrayList gepackt. arrayList.get(0) ist ja die erste position und dann arrayList(1) und so weiter. die werte der einen spalte sind ja immer mit .get(i) und die der anderen mit .get(i+1) zu bekommen.

wie kann ich nun den mittelwert fuer alle werte Value berechnen, wenn die if anweisung wahr ist, also wenn alle werte value innerhalb meines zeitfensters sind?

danke!
 

André Uhres

Top Contributor
kubi hat gesagt.:
..ich hab mein resulset in eine arrayList gepackt. arrayList.get(0) ist ja die erste position und dann arrayList(1)
und so weiter. die werte der einen spalte sind ja immer mit .get(i) und die der anderen mit .get(i+1) zu bekommen...
Du hast ja eigentlich eine Liste von Listen. oneRow musst du demnach in der Schleife "while(rs.next()){..}"
jedesmal neu instanzieren! (oneRow = new ArrayList()).
Hier ist mal ein Beispielcode das auch ohne ResultSet läuft und die rows einfach nur zu Testzwecken generiert:
Code:
//package schnipsel4;
/*
 * MittelDemo.java
 */
import java.util.*;
public class MittelDemo{
    private List<Float> oneRow;
    private List<List<Float>> rows;
    public MittelDemo() {
        test();
    }
    private void test(){
        rows  =  new ArrayList<List<Float>>();
        for (int i = 0; i < 200; i++) {
            oneRow = new ArrayList<Float>();
            oneRow.add((float)i);
            oneRow.add((float)i);
            rows.add(oneRow);
        }
        int rowsIndex = 0;
        float fensterUpperLimit = 0f;
        float fensterSumme, fensterAnzahl;
        while(rowsIndex < rows.size()) {
            fensterSumme = 0f;
            fensterAnzahl = 0f;
            fensterUpperLimit += 60;
            while(rowsIndex < rows.size() && rows.get(rowsIndex).get(0) <= fensterUpperLimit ){
                fensterSumme += rows.get(rowsIndex).get(1);
                fensterAnzahl++;
                rowsIndex++;
            }
            System.out.println("fensterUpperLimit="+fensterUpperLimit
                    +"  fensterSumme="+fensterSumme
                    +"  fensterAnzahl="+fensterAnzahl
                    +"  Mittelwert="+(fensterSumme/fensterAnzahl)
                    );
        }
    }
    public static void main(String args[]) {new MittelDemo();}
}

EDIT: Ich bin mir nicht sicher welche Variante du willst.
Hier wandert das Fenster im Zeilentakt statt im Minutentakt:
Code:
       int rowsIndex = 0;
        int fensterIndex;
        float fensterUpperLimit;
        float fensterSumme, fensterAnzahl;
        while(rowsIndex < rows.size()) {
            fensterIndex = rowsIndex;
            fensterSumme = 0f;
            fensterAnzahl = 0f;
            fensterUpperLimit = rows.get(rowsIndex).get(1) + 60;
            while(fensterIndex < rows.size() && rows.get(fensterIndex).get(0) <= fensterUpperLimit ){
                fensterSumme += rows.get(fensterIndex).get(1);
                fensterAnzahl++;
                fensterIndex++;
            }
            System.out.println("fensterUpperLimit="+fensterUpperLimit
                    +"  fensterSumme="+fensterSumme
                    +"  fensterAnzahl="+fensterAnzahl
                    +"  Mittelwert="+(fensterSumme/fensterAnzahl)
                    );
            rowsIndex++;
        }
 

AlArenal

Top Contributor
Hat es nen bestimmten Grund, warum du deine Berechnungen nicht in der DB machst? MIt SQL kann noch mehr machen, als nur Daten ablegen, lesen, ändern und löschen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Robert Zenz Aufteilen von Up/Downvotes eines Benutzers in drei Gruppen. Datenbankprogrammierung 0
H Oracle Resize eines Images in Java und Rückgabe des Image als BLOB an die Oracle Datebank Datenbankprogrammierung 14
damike84 Hibernate: persistieren eines Graphen Datenbankprogrammierung 2
G Laufzeit eines Algorithmus mittels Big Theta bestimmen Datenbankprogrammierung 5
G ID zuweisung eines TerminKalenders (mehrere Kalender) Datenbankprogrammierung 8
D Hibernate: Zustand eines Objekts erkennen? Datenbankprogrammierung 0
S HSQLDB Verbieten eines update auf eine bestimmte reihe Datenbankprogrammierung 4
J Datenbankeintag eines Warenkorbes funktioniert nicht Datenbankprogrammierung 4
H MySQL Werte eines Datensatzes in einen anderen kopieren Datenbankprogrammierung 2
M [Hibernate]Abgleich eines lokalen Objekts mit dem Zustand aus der Datenbank. Datenbankprogrammierung 3
N Problem bei Erstellung eines Index Datenbankprogrammierung 12
G PostgreSQL Postgre: Passwort eines Benutzers ändern Datenbankprogrammierung 3
D Anzeige wärend des Ausführens eines Statements Datenbankprogrammierung 13
N executeUpdate "innerhalb" eines Resultsets Datenbankprogrammierung 14
S Select eines bestimmten Datensatzes Datenbankprogrammierung 4
J Kopieren eines Datensatzes Datenbankprogrammierung 4
R Effiziente Java-Methode zum finden eines freien PK Datenbankprogrammierung 7
M Zugriff auf eine Access-Datenbank innerhalb eines jar-Files Datenbankprogrammierung 7
brainray Bei MySQL alle Datenbanken eines Servers abfragen Datenbankprogrammierung 3
1 User die Rechte eines Datenbankerstellers zuweisen? Datenbankprogrammierung 3
X SQL Abfrage für Ähnlichkeit eines Strings Datenbankprogrammierung 2
B SQL Abfrage. Nur den ersten eines Blocks Datenbankprogrammierung 2
M Passwort eines Technischen Users hinterlegen Datenbankprogrammierung 6
A JPA: Zweite Instanz eines Entitätsobjekts Datenbankprogrammierung 3
M Konvertierung eines Ojects to String Datenbankprogrammierung 3
T Datenbanknamen eines Datenbankservers auslesen Datenbankprogrammierung 9
J Größe eines ResultSets Datenbankprogrammierung 12
G Problem beim Schreiben eines Dateipfads in MySQL-DB Datenbankprogrammierung 9
G Löschen eines Eintrages verbunden mit JList Datenbankprogrammierung 5
F Filtern innerhalb eines Resultset Datenbankprogrammierung 12
W Anzahl der Spalten eines ResultSets bestimmen Datenbankprogrammierung 5
F die DN eines LDAP verzeichnisses abfragen Datenbankprogrammierung 2
B Laden eines JDBC Treiber. Datenbankprogrammierung 7
N Struktur eines Datenbankinterface? Datenbankprogrammierung 7
P Wirkliche Zeilenanzahl eines ResultSets ermitteln Datenbankprogrammierung 22
K frage zum ausführen eines INSERT statements Datenbankprogrammierung 16
M Abfrage trennt Ergbnis eines Atrributes nach den Leerzeichen Datenbankprogrammierung 4
F Abfrage eines DB Feldes aus einer mySQL Datenbank Datenbankprogrammierung 2
K Datenbank eines Forums nutzen Datenbankprogrammierung 11
J Alle Spalten und Zeilen eines ResultSets ausgeben ? Datenbankprogrammierung 2
B Zeilenzahl eines ResultSet ermitteln Datenbankprogrammierung 5

Ähnliche Java Themen

Neue Themen


Oben