Skocz do zawartości

Raport własny - sumaryczna liczba godzin

Polecane posty

Potrzebowałbym uzyskać informację o sumarycznej rzeczywistej liczbie godzin przepracowanych przez wszystkich pracowników w firmie.

 

W jakiej tabeli można znaleźć te informacje?

 

Jakakolwiek tabela która pokaże dzienny bądź miesięczny czas przepracowany będzie jak najbardziej pomocna.

 

Jak co w Gratyfikancie są te dane tylko pytanie która baza.

2017-04-04_12h29_15.png.03d51ded9843d4c6deef9e96fcb9bf6b.png

Link to postu

Tabela: SumaryczneECP
Pole:     GodzinPrzepracowanych_Ticks

W ogólnym założeniu zapis w sumarycznej ECP zawiera informacje o ilości dni/godzin z okresu 1 miesiąca.
Okres ten może być inny, jeżeli umowa, dla której wyliczono sumaryczną nie trwa przez cały miesiąc lub w umowie zmieniono wymiar zatrudnienia - wówczas dla pracownika, w danym miesiącu może istnieć wiele sumarycznych ECP.
 

Edytowane przez Krzysztof W.
Link to postu

Panie Jacku rzeczywiście da rade, jak to mówią kto pyta nie błądzi.

 

Panie Krzysztofie witamy na forum :P

A tak na poważnie dziękuje za informacje o tablicy osobiście stawiałem bardziej na inną tablicę.

 

Dla leniwych i potomnych

SELECT SUM(GodzinPrzepracowanych_Ticks)/36000000000 AS 'Suma godzin w miesiącu'
  FROM [Nexo_InvestTech].[ModelDanychContainer].[SumaryczneECP]
  WHERE Miesiac like '2017-01-01%' --zmienic wartość dla miesiąca

 

Edytowane przez Adam G
Literówka
Link to postu

Odgrzejmy trochę temat

 

Zmodyfikowałem trochę raport w celu umieszczenia go w programie, zapytanie wygląda następująco.

DECLARE @wynik int = {LI:Z okresu:
SELECT 0, '(bieżący miesiąc)' UNION
SELECT 1, '(bieżący kwartał)' UNION
SELECT 2, '(bieżący rok)'
};
DECLARE @data datetime = {DATA_APLIKACYJNA}
DECLARE @dateStart datetime = @data, @dateEnd datetime = @data

IF @wynik = 0 BEGIN SET @dateStart = DATEFROMPARTS(YEAR(@data), MONTH(@data), 1); SET @dateEnd = EOMONTH(@data); END
IF @wynik = 1 BEGIN SET @dateStart = DATEADD(qq, DATEDIFF(qq, 0, @data), 0); SET @dateEnd = DATEADD (dd, -1, DATEADD(qq, DATEDIFF(qq, 0, @data) +1, 0)); END
IF @wynik = 2 BEGIN SET @dateStart = DATEFROMPARTS(YEAR(@data),1, 1); SET @dateEnd = EOMONTH(@data); END

SELECT 
	A.Id,
	A.Miesiac,
	Umowy.Sygnatura_PelnaSygnatura AS 'Nr umowy',
	CONCAT(Osoby.Nazwisko, ' ' , Osoby.Imie) AS 'Nazwisko i Imię ',
	A.GodzinPrzepracowanych_Ticks/36000000000 AS 'Suma godzin'
  FROM ModelDanychContainer.SumaryczneECP AS A
  INNER JOIN ModelDanychContainer.UmowyPracownicze AS Umowy ON A.Umowa_Id = Umowy.Id
  INNER JOIN ModelDanychContainer.Osoby AS Osoby ON Umowy.Pracownik_Id = Osoby.Id
  WHERE Miesiac BETWEEN @dateStart AND @dateEnd

Wszystko fajnie pięknie tylko znalazłem jeden nietypowy "błąd", po uruchomieniu i sprawdzeniu raportu pojawiły się dane osoby która nie jest oraz nigdy nie była naszym pracownikiem.

 

Po sprawdzeniu bazy (danych dokładniej tablicy ModelDanychContainer.Osoby) znalazłem w niej listę 1002 osób które nie są naszymi Pracownikami.

 

Czy jest to jakiś błąd, czy też może jakaś "ukryta" funkcjonalność?

Link to postu

Panie Jarku jak zawsze pomogło.

 

Dla potomnych i leniwych:

DECLARE @wynik int = {LI:Z okresu:
SELECT 0, '(bieżący miesiąc)' UNION
SELECT 1, '(bieżący kwartał)' UNION
SELECT 2, '(bieżący rok)'
};
DECLARE @data datetime = {DATA_APLIKACYJNA}
DECLARE @dateStart datetime = @data, @dateEnd datetime = @data

IF @wynik = 0 BEGIN SET @dateStart = DATEFROMPARTS(YEAR(@data), MONTH(@data), 1); SET @dateEnd = EOMONTH(@data); END
IF @wynik = 1 BEGIN SET @dateStart = DATEADD(qq, DATEDIFF(qq, 0, @data), 0); SET @dateEnd = DATEADD (dd, -1, DATEADD(qq, DATEDIFF(qq, 0, @data) +1, 0)); END
IF @wynik = 2 BEGIN SET @dateStart = DATEFROMPARTS(YEAR(@data),1, 1); SET @dateEnd = EOMONTH(@data); END

SELECT 
	A.Id,
	A.Miesiac,
	Umowy.Sygnatura_PelnaSygnatura AS 'Nr umowy',
	CONCAT(Osoby.Nazwisko, ' ' , Osoby.Imie) AS 'Nazwisko i Imię',
	A.GodzinPrzepracowanych_Ticks/36000000000 AS 'Suma godzin'
  FROM ModelDanychContainer.SumaryczneECP AS A
  INNER JOIN ModelDanychContainer.UmowyPracownicze AS Umowy ON A.Umowa_Id = Umowy.Id
  INNER JOIN ModelDanychContainer.Pracownicy AS Pracownicy ON Umowy.Pracownik_Id = Pracownicy.Id
  INNER JOIN ModelDanychContainer.Osoby AS Osoby ON Pracownicy.Osoba_Id = Osoby.Id
  WHERE Miesiac BETWEEN @dateStart AND @dateEnd

 

PS: Da radę dostać możliwość kasowania własnych postów?

Link to postu
16 godzin temu, Adam G napisał:

Da radę dostać możliwość kasowania własnych postów?

 

Nadanie takich uprawnień skutkowałoby możliwością usuwania założonych przez siebie tematów wraz z odpowiedziami wszystkich użytkowników. Usuwać dałoby się również posty, które były cytowane przez innych użytkowników.
W związku z powyższym na chwilę obecną użytkownik może jedynie edytować treść własnych postów przez okres 24h od momentu napisania.
Chęć usunięcia tematów/postów należy zgłaszać do naszych moderatorów.

 

Link to postu
×
×
  • Dodaj nową pozycję...