Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

Kako sabrati vreme ? -- tj izracunati dnevnu evidenciju rada ?

  • 9 odgovora
  • 8.030 pregleda

Najnovija ↓

Kako sabrati vreme ? -- tj izracunati dnevnu evidenciju rada ? 10.01.2009. u 21:12 · pre 216 meseci #1
Čitao sam ovde po forumu, pre nego što sam postavio ovu poruku, ali nisam našao to šte me zanima, pa ajde da pitam.

imam problem koji ne znam kako da rešim.

U vremenskoj evidenciji radnika, treba da izračunam

1. Koliko je svaki radnik radio u toku meseca
2. Koliko je svaki radnik radio u toku godine.

Tabela izgleda ovako:

EvidencijaID --- RadnikID ---- VremeDolaska --- Vreme Odlaska

1 ------------- 7 ---------- 01.01.2009 08:30 ----- 01.01.2009 17:15
2 ------------- 7 ---------- 02.01.2009 08:45 ----- 02.01.2009 18:00
3 ------------- 7 ---------- 03.01.2009 08:40 ----- 03.01.2009 17:45


Rezultat treba da bude

RadnikID --------- časova na radu

7 ---------------- 186
8 ---------------- 160
9 ---------------- 170

itd. itd

Mučio sam se sa Group By procedurom, ali ništa nisam uspeo da uradim.

Zna li neko rešenje za ovo ?

10x thanks in advance

Re: Kako sabrati vreme ? -- tj izracunati dnevnu evidenciju rada ? 10.01.2009. u 23:15 · pre 216 meseci #2
Code:

select RadnikId, SUM(DATEPART(Hh, VremeOdlaska - VremeDolaska)) + SUM(DATEPART(mi, VremeOdlaska - VremeDolaska))/60.0
from Evidencija
group by RadnikId


ovo ti je da vidis skolskio resenje, a sledece ti je optimalno resenje koje se bazira na prirodi datetime polja (float koji kao celobrojni deo nosi broj dana):


Code:

select RadnikId, SUM(CAST(VremeOdlaska - VremeDolaska as float))*24.0
from Evidencija
group by RadnikId



oba ce ti dati isto resenje uz mozda razliku na nekoj decimali
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: Kako sabrati vreme ? -- tj izracunati dnevnu evidenciju rada ? 10.01.2009. u 23:52 · pre 216 meseci #3
@mmix: puno hvala za odgovor. Jednostavno, a super mi radi posao.

Samo još jedno pitanje, ako je to uopšte moguće uraditi

Evo sada sam postavio sledeće primere, da testiram rad.

EvidencijaID --- RadnikID ---- VremeDolaska --- Vreme Odlaska
1 ------------- 7 ---------- 01.01.2009 09:00:00 ----- 01.01.2009 17:15:00
2 ------------- 7 ---------- 02.01.2009 10:10 ----- 02.01.2009 17:15

Radnik je prvog dana radio: 8 sati i 15 minuta
Radnik je drugog dana radio: 7 sati i 5 minuta

sve skupa je radio 15 sati i 20 minuta

a meni, bilo koje od ova 2 rešenja pokazuje : 15, 33

ok .. jasno mi je da je 20 minuta, jedna trećina od 60 minuta, tj punog sata, ali da li može da se dobije baš 15 sati i 20 minuta ? .. nije problem ni ako je u 2 kolone.

A nije problem ni ovako, nego, pokazao sam korisniku kako će izgledati report, pa da se sad ne ubeđujem sa njim da to ne može.

U svakom slučaju puno ti hvala, sačuvao si mi vreme !!!

Pozdrav, svako dobro


Re: Kako sabrati vreme ? -- tj izracunati dnevnu evidenciju rada ? 11.01.2009. u 08:39 · pre 216 meseci #4
Sve je moguce ;) U prvoj varijanti samo moras da pazis da suma minuta preko 60 minuta doda sate u prvu kolonu. U drugoj varijanti je samo sistem da svedes float na osnovu 1440 (broj minuta u danu) da bi izvukao minute.

Code:

select RadnikId, SUM(DATEPART(Hh, VremeOdlaska - VremeDolaska)) + SUM(DATEPART(mi, VremeOdlaska - VremeDolaska))/60 as Sati,
    SUM(DATEPART(mi, VremeOdlaska - VremeDolaska)) % 60 as Minuta
from Evidencija
group by RadnikId


ili brza varijanta

Code:

select RadnikId, FLOOR(SUM(CAST(VremeOdlaska - VremeDolaska as float))*24) as Sati,
        CAST(FLOOR(SUM(CAST(VremeOdlaska - VremeDolaska as float))*1440) as int) % 60 as Minuta
from Evidencija
group by RadnikId
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: Kako sabrati vreme ? -- tj izracunati dnevnu evidenciju rada ? 11.01.2009. u 23:10 · pre 216 meseci #5
Kralju !!!

Ova prva varijanta je tacnija.

jer je na osnovu primera koji sam dao, tacno izračunato da je radnik radio 8 sati i 20 minuta, dok je druga solucija izračunala 8 sati i 19 minuta.


Pozdrav i hvala još jednom !!
Re: Kako sabrati vreme ? -- tj izracunati dnevnu evidenciju rada ? 11.01.2009. u 23:56 · pre 216 meseci #6
Sad me zanima još nešto,

da li je moguće, na osnovu podataka, napraviti i godišnju evidenciju dolazaka ?

na primer

EvidencijaID --- RadnikID ---- VremeDolaska --- Vreme Odlaska
1 ------------- 7 ---------- 01.01.2009 09:00:00 ----- 01.01.2009 17:15:00
2 ------------- 7 ---------- 02.01.2009 10:10 ----- 02.01.2009 17:15
.
.
.
1 ------------- 7 ---------- 01.02.2009 09:00:00 ----- 01.02.2009 17:15:00
2 ------------- 7 ---------- 02.02.2009 10:10 ----- 02.02.2009 17:15


RADNIKID --- MESEC ---- UKUPNO SATI NA POSLU ?

Zanima me, kako da izvučem mesec iz vremena, i napravim grupisanje po mesecima ?


Re: Kako sabrati vreme ? -- tj izracunati dnevnu evidenciju rada ? 12.01.2009. u 00:30 · pre 216 meseci #7
ma ok, u principu ako bi stavio ROUND umesto FLOOR i druga bi bila precizna jer bi kompenzovalo greske u zaokruzivanju.

A sto se tice meseca, DATEPART() funkcija je tvoje resenje, kao sto sam vadio sate i minute tako moze da vadi i mesece i godine, pogledaj help.
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: Kako sabrati vreme ? -- tj izracunati dnevnu evidenciju rada ? 13.01.2009. u 03:31 · pre 216 meseci #9
ak neko ostane do posle 12 nocu na poslu, nece mu dobro odraditi obracun, pa bi valjalo uzeti u obzir i dan u mesecu. posto neko moze da zagine i zadnjeg dana u mesecu, valjalo bi obratiti paznju i na mesec. a mozda neki baksuz moradne novu god da proslavi u firmi pa bi valjalo ukalkulisati i godinu... sve to radis analogno ovome kako ti je mmix rekao.
(uzimanje u obzir ovih stvari moze malcice da ti zakomplikuje mesecne obracun - interval koji probije neki mesec ces da skratis na interval do kraja zadnjeg dana u mesecu , interval koji je zapoceo u prethodnom mesecu ces da skratis na pocetak tog meseca...)

treba ljudima da napomenes, da ukoliko zaborave da se prijave, ili odjave, taj dan im uopste nece ulaziti u obracun radnog vremena

ukoliko se se nekom 2 intervala preklope, nece dobro racunati (tvoja racuna podrazumeva da su intervali disjunktni)
Re: Kako sabrati vreme ? -- tj izracunati dnevnu evidenciju rada ? 13.01.2009. u 08:41 · pre 216 meseci #10
pa radice sa posle 12, samo nece raditi sa prelaskom u sledeci mesec kad se grupise po mesecu. U principu se to radilo kad nsa tako sto se 1. u mesecu u 00:00 radio "presek", svi jos uvek otvoreni su zatvoreni u 0:0 i otvoreni ponovo u 0:0 da bi sistem radio.


preseci mogu da se pojave samo ako je neko izasao a nije cekirao i onda se ponovo cekirao nazad, sa tehnickog aspekta mu ne otvaras novu stavku vec nastavljas staru i sve je ok, a kako ces da resis poslovnu stranu toga (neplacanje laznog prekovremenog, kazne i slicno) to vec resavas kako sef nalaze (mozda email sefu pa rucni unos kontra stavke sa negativnim timespanom da kompenzuje).
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme