Napisany przez: kravi 6.06.2018, 07:29:25
Witam,
Mam taki problem. Jest sobie tabela "czas", w której zapisuje się data początku i końca czynności które wykonuje pracownik.
Tabela zawiera: pracownikID, czasStart, czasKoniec, czynosc. Czas zapisuje jako unixtime (int). Chciałbym uzyskać dane pogrupowane po godzinie i czynności - jako parametr zapytania podaję datę. Zwracamy godzinę, czas trwania czynności w tej godzinie i czynnosc.
Chciałbym otrzymać dane w formie:
Kod
#Godzina #czas (sek) #czynnosc
0 120 1
0 10 2
0 340 3
1 60 2
2 141 2
2 32 3
5 130 1
7 55 1
7 333 3
Nie wiem jak się za to zabrać, bo wszystko fajnie jeśli początek i koniec czynności są w obrębie jednej godziny, ale zwykle jest tak że czynność zaczyna się "za pięć", a kończy kilka minut po. Będę wdzięczny za sugestie ...
Pozdrawiam
Napisany przez: trueblue 6.06.2018, 09:49:11
Skoro się zaczyna za pięć, to znaczy, że należy nie do tej godziny, która będzie za pięć minut, tylko do aktualnej. W czym tu widzisz problem? Chcesz dzielić tą czynność na 5 minut dla jednej godziny i pozostały czas dla pozostałych godzin?
Napisany przez: kravi 6.06.2018, 12:20:27
Cytat(trueblue @ 6.06.2018, 10:49:11 )
Skoro się zaczyna za pięć, to znaczy, że należy nie do tej godziny, która będzie za pięć minut, tylko do aktualnej. W czym tu widzisz problem? Chcesz dzielić tą czynność na 5 minut dla jednej godziny i pozostały czas dla pozostałych godzin?
Przykładowo: pracownik zalogował się dziś o godz 7:50 - mam wpis w czasStart 1528271400, a wylogował się np. o godz. 9:30 - mam wpis w czasKoniec 1528277400, wykonał czynność o id=1. Jak to zrobić żeby jednym zapytaniem uzyskać wynik:
Kod
#Godzina #czas (sek) #czynnosc
7 600 1
8 3600 1
9 1800 1
Napisany przez: mmmmmmm 7.06.2018, 14:08:32
http://sqlfiddle.com/#!9/f018a5e/4
Napisany przez: kravi 8.06.2018, 10:05:29
Cytat(mmmmmmm @ 7.06.2018, 15:08:32 )
http://sqlfiddle.com/#!9/f018a5e/4
Dziękuję, właśnie o to mi mniej więcej chodziło - dopracuję sobie. Ważne że kierunek wskazałeś. Jeszcze raz dzięki.