Size: a a a

2020 October 28

V

Vova in MySQL
select adpc, adlogon, TIMESTAMPDIFF(second, min(timeevent), max(timeevent))
from events
group by adpc, adlogon
источник

ВС

Вячеслав Синельников... in MySQL
Vova
select adpc, adlogon, TIMESTAMPDIFF(second, min(timeevent), max(timeevent))
from events
group by adpc, adlogon
хорошо а как быть с меткой события логин логофф ?
источник

V

Vova in MySQL
Вячеслав Синельников
хорошо а как быть с меткой события логин логофф ?
моя логика рассчитывана что логин раньше логофа, но для полной чистоты эксперимента можно закейзвенить
источник

V

Vova in MySQL
select adpc, adlogon, TIMESTAMPDIFF(second, min(case event when 'login' then timeevent else '9999-99-99' end), max(case event when 'logoff' then timeevent else '0000-00-00' end))
from events
group by adpc, adlogon
источник

V

Vova in MySQL
или вообще просто взять модуль разницы
источник

ВС

Вячеслав Синельников... in MySQL
надо просто поднять совместив adlogin adpc
источник

V

Vova in MySQL
группировка это и делает
источник

ВС

Вячеслав Синельников... in MySQL
Vova
группировка это и делает
SELECT adlogon,adpc,timelogonstart,timelogonend,timelogoffstart,timelogoffend,timework,timenotwork FROM (
(
SELECT
adlogon,
adpc,
timeevent AS timelogonstart,
(SELECT IFNULL (MIN(events.timeevent),NOW()) FROM events WHERE adlogon=t.adlogon AND adpc=t.adpc AND timelogonstart < timeevent AND event='logoff' LIMIT 1) AS timelogonend,
NULL AS timelogoffstart,
NULL AS timelogoffend,
SEC_TO_TIME(SUM(TO_SECONDS((SELECT IFNULL (MIN(events.timeevent),NOW()) FROM events WHERE adlogon=t.adlogon AND adpc=t.adpc AND timelogonstart < timeevent AND event='logoff' LIMIT 1)) - TO_SECONDS(timeevent))) AS timework,
NULL AS timenotwork
FROM events AS t
WHERE event = 'logon' AND (timeevent BETWEEN '2020-10-28' AND '2020-10-29')
GROUP BY adlogon
)
UNION ALL
(
SELECT
adlogon,
adpc,
NULL AS timelogonstart,
NULL AS timelogonend,
timeevent AS timelogoffstart,
(SELECT IFNULL (MIN(events.timeevent),NOW()) FROM events WHERE adlogon=t.adlogon AND adpc=t.adpc AND (timelogoffstart < timeevent) AND event='logon' LIMIT 1) AS timelogoffend,
NULL AS timework,
SEC_TO_TIME((TO_SECONDS((SELECT IFNULL (MIN(events.timeevent),NOW()) FROM events WHERE adlogon=t.adlogon AND adpc=t.adpc AND (timelogoffstart < timeevent) AND event='logon' LIMIT 1)) - TO_SECONDS(timeevent))) AS timenotwork
FROM events AS t
WHERE event = 'logoff' AND (timeevent BETWEEN '2020-10-28' AND '2020-10-29')
GROUP BY adlogon
)
) AS stat
источник

ВС

Вячеслав Синельников... in MySQL
вот в этом запросе нижу пишу group by adlogon ругается....
источник

ВС

Вячеслав Синельников... in MySQL
пардон не ругается но первую половину селектит и оставляет нулл
источник

V

Vova in MySQL
засуньте этого монстра под CTE
источник

ВС

Вячеслав Синельников... in MySQL
Vova
засуньте этого монстра под CTE
вот как то странно группирует
источник

V

Vova in MySQL
пока неясно почему, а покажите до и после
источник

ВС

Вячеслав Синельников... in MySQL
Vova
пока неясно почему, а покажите до и после
без group by и с group by?
источник

V

Vova in MySQL
да
источник

ВС

Вячеслав Синельников... in MySQL
Vova
да
без group by
источник

ВС

Вячеслав Синельников... in MySQL
Vova
да
c group by
источник

V

Vova in MySQL
эээ, сейчас другая структура и PCADMIN один
источник

IZ

Ilia Zviagin in MySQL
Seroshka
Подскажите как сделать возможность указовать порядок в таблице, потому что как мне кажется если есть колонка которая зранит порядковый номер записи для отображения, то когда удаляется элемент то нужно сдвинуть порядковые номера остальных, как то трудоемко получается, подскажите как это сделать правельно
Таблица - это неупорядоченный набор строк.
источник

ВС

Вячеслав Синельников... in MySQL
Vova
эээ, сейчас другая структура и PCADMIN один
обратите внимание на скролл справа данных много
источник