Wykres słupkowy z podzialem na dni, tygodnie, miesiace

0

Witam

Tworze program, który wizualizuje dane przy pomocy wykresu słupkowego [JFreeChart] pochodzące z bazy danych. Wizualizacja się odbywa tak ze określam granice z jakiego będą pobierane dane i za pomocą pola rozwijanego okreslam co ma przedstawiac jeden slupek wykresu [godzine, dzien, tydzien, miesiac ,...].Na razie wybieranie rekordów mam oparte na PreparedStatement bez wykorzystania tego pola rozwijanego. '?' to pola START i KONIEC służące do określania granic. Kwerenda wybierająca wygląda tak:

SELECT Data, Wartosc FROM test WHERE Data>= to_date( ? ,'YYYY-MM-DD HH24:MI') and Data <= to_date( ? ,'YYYY-MM-DD HH24:MI') ORDER BY Data";

I tak pole rozwijane ma opcje:
-godzina
-dzien
-tydzień
-miesiąc

Widok okna aplikacji:
user image

W bazie danych w tabeli mam rekordy:

  • Data
  • Wartosc

Przykładowe dane:

01.01.2010 11:00 | 100
01.01.2010 11:05 | 100
01.01.2010 11:06 | 100
01.01.2010 11:12 | 100
01.01.2010 11:14 | 100
01.01.2010 18:00 | 100
02.01.2010 11:14 | 100
03.01.2010 10:00 | 100
24.01.2010 11:00 | 100
10.02.2010 11:00 | 100

I tak to ma działać... określam granice od [01.01.2010 10:00] do [10.02.2010 12:00]. Jeżeli w polu rozwijanym wybiorę:

a) [godzina] - powinienem mieć wykres z 6-cioma słupkami:

1 słupek: Zsumowane wartości:

01.01.2010 11:00 | 100
01.01.2010 11:05 | 100
01.01.2010 11:06 | 100
01.01.2010 11:12 | 100
01.01.2010 11:14 | 100 ... czyli dla 11.00 mam 500

2 słupek: 02.01.2010 11:00 | 100
... itd

b) [dzień] - powinienem mieć wykres z 5-cioma słupkami:

1 slupek wartosc 600
2 slupek 100
3 slupek 100
... itd

c) [tydzień] - powinienem mieć wykres z 5-cioma słupkami:
1 slupek wartosc 600
2 slupek 100
3 slupek 100
... itd

d) [miesiąc] - powinienem mieć wykres z 2-cioma słupkami:
1 slupek wartosc 900
2 slupek 100

Zastanawiam się czy to dalej tworzyć o dynamicznie generowana kwerendę czy jakoś inaczej.

0

nie napisałeś jaka baza
Twórz zapytanie tak aby zwróciło Ci już gotowe dane. Dla każdego zakresu sumowania zapytanie będzie wyglądało inaczej - co innego potrzebujesz z daty wyciągnąć

0

Działam na Oracle Database 10g Express Edition. Możesz napisać przykładową kwerendę dla mojego przykładu ?

0

Czyli o ile dobrze myślę mam działać na funkcji SUM

NP. Select sum (wartosc) as całość, data from pracownicy where data > ' 10/01/01' and data < ' 10/01/07' GROUP BY data

I to zwróci mi zsumowane wartości w poszczególnych dni. Ale jak bedzie wygladala kwerenda dla tygodnia ( w sensie zsumowane wartosci z 7 dni) i miesiąca (zsumowane wartosci z 28/30/31 dni)

1 użytkowników online, w tym zalogowanych: 0, gości: 1