Autor Beitrag
rd3
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 30.04.08 16:28 
Hallo,

ich habe ein Problem mit einem SQL-Befehl, doch zuerst der Hintergrund:

Ich habe 1 Tabelle, in der bestimmte Tätigkeiten stehen (Feld "Aufgabe" (String über ComboBox auswählbar)). Außerdem habe ich noch 2 Datumsfelder "Anfang" und "Ende"

Wie geht der SQL-Befehl dafür, welche Aufgaben am häufigsten stehen und wie lange die Aufgaben gedauert haben (Ende-Anfang)? Die häufigsten Aufgaben sollten ganz oben stehen...

Hoffe, mir kann einer helfen...

Viele Grüße und danke vorab,

rd3
Robert.Wachtel
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 895
Erhaltene Danke: 7

Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
BeitragVerfasst: Mi 30.04.08 18:00 
Welche Datenbank?

Welches Ergebnis wünschst Du Dir denn bei unterschiedlicher Zeitdauer für ein und dieselbe Aufgabe? Den Durchschnittswert?

Dann würde ich es bei Oracle mit einem Subselect machen.

Vorausgesetzt, Du hast eine Tabelle mit folgenden Spalten:

ausblenden Quelltext
1:
2:
3:
4:
ID       Number
Aufgabe  VarChar
Von      Date
Bis      Date


dann zeigt dir folgendes SQL-Statement:

ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
select 
  aufgabe, 
  avg(dauer) as durchschnitt, 
  count(aufgabe) as anzahl 
from 
  (select 
      aufgabe, 
      bis-von as dauer 
   from test)
group by 
  aufgabe
order by 
  anzahl desc


die Aufgaben mit ihrer Durchschnittsdauer absteigend nach ihrer Häufigkeit auf.

Ob die verkürzte Form ohne Subselect funktioniert müsste ich ausprobieren:

ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
8:
select 
  aufgabe, 
  avg(bis-von) as durchschnitt, 
  count(aufgabe) as anzahl 
group by 
  aufgabe
order by 
  anzahl desc