Kapazität errechnen

marja

Benutzer
Beiträge
7
Hallo zusammen,

ich habe eine neue kleine Herausforderung und benötige eure Hilfe.

Ich habe folgende Tabellen:
1. TBL_TEAM_KONTAKT [Name, Vorname, Rolle, Team, Ma_Einsatz]
2. TBL_PIP [Pi_Nr, Print_Nr, Sprint_Start, Sprint_Ende]

Nun steht in den Stammdaten der TBL_TEAM_KONTAKT auch die prozentuale Einsatzkapazität pro Tag. Beispiel bei mir sind es 100 (für 100%), bei einem Kollegen aus dem Team 70 (für 70%).

Nun möchte ich gerne in dem jeweiligen Sprint sehen, wie viel Kapazität des Teams zur Verfügung steht. Jeder Mitarbeiter hat pro Tag die Kapazität von 1 bei 100% bzw. 0,7 bei 70% und so weiter.

Vom Gedanke her würde ich also aus der Tabelle TBL_PIP pro Datensatz die einzelnen Tage des Von/Bis Zeitraumes ermitteln und dann die Kapazität berechnen. Später würde ich das dann noch mit der Tabelle Abwesenheit in Beziehung setzen und wenn ein Mitarbeiter im Urlaub in diesem Zeitraum ist zum Beispiel, fällt ja seine Kapazität für diesen Tag in dem entsprechenden Zeitraum weg. Ich hoffe ihr könnt mir folgen?

Von daher, meine erste Frage das ich den Einstieg finde. Wie kann ich aus einer Tabelle in einer Abfrage den Zeitraum von zwei Datenfeld [Von] [Bis] einzeln ausgeben?

Marja
 
Werbung:
Deine Frage habe ich glaube ich nicht verstanden. Meinst Du soetwas:
Code:
select Sprint_Start, Sprint_Ende
  from TBL_PIP
 where Sprint_Start >= :von   and Sprint_Start < :bis
   and Sprint_Ende >= :von    and Sprint_Ende < :bis
-- alternativ

select Sprint_Start, Sprint_Ende
  from TBL_PIP
 where Sprint_Start between :von   and  :bis
   and Sprint_Ende  between :von   and  :bis

Oder geht es darum, die Datumswerte innerhalb der Abfrageparameter zu ermitteln?
Code:
-- generierte Beispieldaten
select sysdate + rowNumber as runningDateWithTime,
       trunc(sysdate) + rowNumber as runningDatePure,
       trunc(sysdate) + rowNumber - 31 as runningDateWithOffset,
       rowNumber as OriginalRowNumber
  from (select level as rowNumber from dual connect by level <= 10) generatedRows

Code:
-- hier kann man nun auch nach :von :bis filtern
select * from <selectstatement oben>  where <Spalte der Wahl> between :von and :bis
 
Erst einmal Danke dabadepdu
Ja, mit dem beschreiben war es gestern bescheiden von mir. Ich versuche es nochmal.

Aktuell habe ich die Stammdatentabelle genommen (tbl_team_kontakt) und habe da eine Abfrage darüber gelegt. In dieser geht es darum, alle Mitarbeiter zu einem Team gruppieren und die Summe des MA_Einsatzes anzuzeigen. Das ist ja total einfach. Man geht immer davon aus, das jeder Mitarbeiter pro Tag 1 Arbeitspunkt hat. Es sei denn ein Mitarbeiter hat nur die MA_Kapazität von 70%, dann hätte dieser pro Tag nur 0,7 Arbeitspunkte.

Stammdaten
Name | Team | MA_Einsatz
Peter | Team1 | 100
Luise | Team1 | 70
... usw.

Beispiel der Abfrage:
Team | Anzahl_Member | Arbeitspunkte
Team1 | 8 | 4,3
Team2 | 1 | 1

Damit weiß ich erstmal wie viel Arbeitspunkte pro Tag in dem jeweiligen Team verfügbar sind. Nun kann es aber auch sein, dass ein Teammitglied Urlaub oder was anderes in einer Abwesenheitsliste eingetragen hat (tbl_team_abwesenheit). Hier steht neben der MA_ID auch der Abwesenheitsgrund und der jeweilige Zeitraum [Von] [Bis]. Beispiel: Peter | Urlaub | 05.10.2020 | 09.10.2020
Und dann habe ich eben noch die Einsatzplanung Tabelle in der die sogenannten Sprints stehen. Das heißt ein Sprint geht Bsp. 05.10.2020 bis 18.10.2020. Das Team1 hätte, wenn keine Abwesenheiten eingetragen wären 4,3 Arbeitspunkte x 10 Arbeitstage für die 2 Wochen. Nun hat aber Peter die erste Woche Urlaub und Peter steht pro Tag auch nur 70% zur Verfügung. Somit hätte das Team in der Zeit statt 43 Arbeitspunkte nur 39,5 Arbeitspunkte. Das zum Hintergrund, wo ich gerne hin möchte.

Das heißt, dadurch das ich in beiden Tabellen (tbl_team_abwesenheiten) und (tbl_pip) jeweils die Datenfelder für den Zeitraum als [von] und [bis] definiert habe muss ich - denke ich - diese irgendwie als einzelne Tage anzeigen lassen um damit rechnen zu können.

tbl_team_kontakte
- ma_id
- name
- team_id
- ma_einsatz

tbl_tea_abwesenheit
- ma_id
- abwesenheit
- start_date (Date)
- end_date (Date)

tbl_pip
- pi_nr
- sprint_nr
- sprint_start (Date)
- sprint_end (Date)

Daher war meine erste Frage darauf gemeint, wie ich den Zeitraum [start] und [end] als Kopfspalte in einer Abfrage ausgebe um für das jeweilige Team tagesweise die Arbeitspunkte anzeigen zu lassen. Damit kann ich dann - denke ich - weiterarbeiten und mit der tbl_pip weiter rechnen, wie viel Arbeitspunkte in den jeweiligen Sprint zur Verfügung steht.

Gruß
Marja
 
Sorry, ich kenne Scrum und im Prinzip auch, was man da so technisch braucht, aber was ist die "Kopfspalte einer Abfrage"?
Ich kenne Kopfzeilen, also die Spaltennamen, die sind mit einer beliebigen Abfrage einfach zu definieren sind.

Vorschlag:
Mach doch einfach ein Beispielergebnis einer von Dir gesuchten Abfrage, dann sollte (passend zu Deinen vorigen Angaben) klar werden, was Du möchtest.
 
Alles klar, danke Dir. So mache ich das.
Ich habe da so ein Bild im Kopf, war mir aber nicht sicher ob man das so umsetzen kann. Daher die ausführliche Beschreibung.

Im ersten Step wollte ich den Zeitraum Von/Bis als Spaltennamen in einer Abfrage ausgeben.
 
Werbung:
Also wir reden offenbar (immernoch) aneinander vorbei.
Du hast oben bereits "Beispiel der Abfrage:" angegeben mit
Team | Anzahl_Member | Arbeitspunkte
Team1 | 8 | 4,3
Team2 | 1 | 1

Mach das doch einfach für "Im ersten Step wollte ich den Zeitraum Von/Bis als Spaltennamen in einer Abfrage ausgeben."
 
Zurück
Oben