Określenie liczby pracowników na podstawie daty zatrudnienia

0

Cześć,

Mam problem (wziął mnie z zaskoczenia ;)) z określeniem liczby pracowników w wybranym okresie. Mam tabelę z informacja o dacie zatrudnienia w danej jednostce oraz datę zakończenia pracy w jednostce - przy czym pracownicy mogą zmieniać w trakcie miesiąca jednostki.

W jaki sposób mógłbym na podstawie tych danych wyciągnąć liczbę pracowników zatrudnionych w jednym miesiącu np. w czerwcu? Po kilku próbach pojawiła się pustka w głowie :/

Będę wdzięczny za każdą wskazówkę!

0

Problem jest trywialny. Weź kartkę i długopis i rozrysuj sobie to:
Zakres daty sprawdzanej:
minDate, maxDate

Data zatrudnienia pracownika:
startDate, EndDate

Dla podpowiedzi sprawdź czy ciąg startDate, EndDate zawiera się w startDate, EndDate

Tutaj przykład z EntityFramework (Sprawdzanie, czy rezerwacja pokoju o podanym starcie i zakończeniu zahacza o podany przedział czasu)

.Where(x => input.DateRange == null ? true :
                                            (input.DateRange.DateFrom >= x.AccommodationFrom && input.DateRange.DateFrom <= x.AccommodationTo && input.DateRange.DateTo >= x.AccommodationFrom && input.DateRange.DateTo <= x.AccommodationTo) ||
                                            (input.DateRange.DateFrom <= x.AccommodationFrom && input.DateRange.DateFrom <= x.AccommodationTo && input.DateRange.DateTo >= x.AccommodationFrom && input.DateRange.DateTo >= x.AccommodationTo) ||
                                            (input.DateRange.DateFrom >= x.AccommodationFrom && input.DateRange.DateFrom <= x.AccommodationTo && input.DateRange.DateTo >= x.AccommodationFrom && input.DateRange.DateTo >= x.AccommodationTo) ||
                                            (input.DateRange.DateFrom <= x.AccommodationFrom && input.DateRange.DateFrom <= x.AccommodationTo && input.DateRange.DateTo >= x.AccommodationFrom && input.DateRange.DateTo <= x.AccommodationTo)
                                        )

x - Rezerwacja pokoju
input.DateRange - Przedział czasu do sprawdzenia

1

Twój warunek jest niepotrzebnie skomplikowany - wystarczą dwa <= oraz jedno && (https://wiki.c2.com/?TestIfDateRangesOverlap).

1

czy prawcownik ma być zatrudniony pełny miesiąc, żeby go wliczyć, czy wystarczy, aby 1 dzień pracy?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.