, если кто-то может помочь с вопросом ниже.
У меня есть таблица, в которой у меня есть даты со временем в одном столбце, во втором столбце prijava_od java У меня есть 1 и 2, по которым 1 означает приход к работа и 2 означает уход с работы. Я хотел бы посчитать, сколько часов рабочие заходят в CRM в день. Очевидно, мой код ниже работает с неправильными результатами, потому что он принимает минимальную дату для 1 и максимальную дату для 2 по всей таблице, а не к желаемой дате.
SELECT CAST(dnevnik_prijave.datum as date),ime_priimek, id_uporabnik,
(SELECT min(datum)
from dnevnik_prijave
WHERE dnevnik_prijave.id_uporabnika=uporabniki.id_uporabnik
AND prijava_odjava='1'
AND datum>='2020-04-01'
AND datum<='2020-04-17'
GROUP BY uporabniki.id_uporabnik) as prihod,
(SELECT max(datum)
FROM dnevnik_prijave
WHERE dnevnik_prijave.id_uporabnika=uporabniki.id_uporabnik
AND prijava_odjava='2'
AND datum>='2020-04-01'
AND datum<='2020-04-17') as odhod,
(SELECT extract(epoch from (odhod - prihod))/3600 as delovne_ure
FROM (SELECT
(SELECT min(datum)
FROM dnevnik_prijave
WHERE dnevnik_prijave.id_uporabnika=uporabniki.id_uporabnik
AND prijava_odjava='1'
AND datum>='2020-04-01'
AND datum<='2020-04-17'
GROUP BY uporabniki.id_uporabnik) as prihod,
(SELECT max(datum)
FROM dnevnik_prijave
WHERE dnevnik_prijave.id_uporabnika=uporabniki.id_uporabnik
AND prijava_odjava='2'
AND datum>='2020-04-01'
AND datum<='2020-04-17') as odhod) as tabela1)
FROM uporabniki, dnevnik_prijave
WHERE dnevnik_prijave.id_uporabnika=uporabniki.id_uporabnik
AND dnevnik_prijave.datum >='2020-04-01' and dnevnik_prijave.datum<='2020-04-17'
GROUP BY (cast(dnevnik_prijave.datum as date)), uporabniki.id_uporabnik
ORDER BY (cast(dnevnik_prijave.datum as date)),ime_priimek asc
Пример таблицы dnevnik_prijave (которую я связываю с таблицей упорабники чтобы получить имена) ниже.
id username datum id_uporabnika prijava_odjava
21424 worker 1 2020-04-17 11:47:06.119505 5000 1
21422 worker 2 2020-04-17 10:52:24.291133 5001 1
21426 worker 1 2020-04-17 13:53:57.757468 5000 2
21425 worker 2 2020-04-17 13:35:40.584538 5001 2
21424 worker 1 2020-04-17 14:01:06.119505 5000 1
21422 worker 2 2020-04-17 15:52:24.291133 5001 1
21426 worker 1 2020-04-17 17:53:57.757468 5000 2
21425 worker 2 2020-04-17 17:35:40.584538 5001 2
21424 worker 1 2020-04-18 11:47:06.119505 5000 1
21422 worker 2 2020-04-18 10:52:24.291133 5001 1
21426 worker 1 2020-04-18 13:53:57.757468 5000 2
21425 worker 2 2020-04-18 13:35:40.584538 5001 2
21424 worker 1 2020-04-18 14:01:06.119505 5000 1
21422 worker 2 2020-04-18 15:52:24.291133 5001 1
21426 worker 1 2020-04-18 17:53:57.757468 5000 2
21425 worker 2 2020-04-18 17:35:40.584538 5001 2
Таблица, которую я хотел бы получить, выглядит следующим образом:
datum ime_priime id_uporabnik prihod odhod delovne
17.04.2020 LAZY WORKER 5000 2020-04-17 11:47:06 2020-04-17 17:53:57 6,2
17.04.2020 HARD WORKER 5001 2020-04-17 10:52:24 2020-04-17 17:35:40 6,6
18.04.2020 LAZY WORKER 5000 2020-04-18 11:47:06 2020-04-18 17:53:57 6,2
18.04.2020 HARD WORKER 5001 2020-04-18 10:52:24 2020-04-18 17:35:40 6,6
Надеюсь, теперь это более понятно ....