Boa tarde a todos,
Eu tenho dois registros de dados iguais ou mais na tabela MySql. Como posso contar os mesmos dados como um e zero se tiver apenas um dado com base no par de status do sinalizador. Abaixo está um exemplo de dados:
GLOBAL_ID FLAG_STATUS
VTSA-C-B002 IN
VTSA-C-B002 OUT
VTSA-C-B003 IN
VTSA-C-B031 IN
VTSA-C-B031 OUT
VTSA-C-B031 OUT
VTSA-C-B002 OUT
VTSA-C-B005 OUT
ABCD-D-B004 IN
ABCD-D-B001 IN
ABCD-D-B003 IN
ABCD-D-B001 OUT
ABCD-D-B003 OUT
ABCD-D-B005 IN
Então o resultado que eu queria contar é parecido com aqui
Global ID Count
VTSA-C-B002 1 (Because have a Pair Flag Status ("IN" AND "OUT")
VTSA-C-B003 0 (Because Dont have a Pair Flag Status ("IN" AND "OUT")
VTSA-C-B031 1
VTSA-C-B005 0
ABCD-D-B004 0
ABCD-D-B001 1
ABCD-D-B003 1
ABCD-D-B005 0
então o resultado final para resumir a contagem assim,
Global_ID ALias SUM of counting
VTSA 2
ABCD 2
Eu tentei esta consulta abaixo, mas o resultado que procuro
SELECT global_id,
mandays
FROM ( SELECT COUNT(DISTINCT b.global_id) AS mandays,
CASE WHEN b.global_id like "%ABCD%" THEN 'ABCD' ELSE 'VTSA' END AS global_id
FROM she_cii.tb_gate_log b
WHERE b.global_id REGEXP 'VTSA|ABCD'
AND date(b.received_date)="2024-02-03"
AND flag_status IN("IN","OUT")
group by SUBSTRING(b.global_id FROM POSITION('-' in b.global_id)+1 FOR 5)
) x
o resultado dessa consulta é assim
global_id mandays
VTSA 36 (counting all distint global id record)
ABCD 45 (counting all distint global id record)
Obrigado, lembraças.