I have a table that has a column called [Conditions met] but within each row it has several values surrounded by commas [0350,380,0999,300,0126,0356,0357,0333,0316] and I want to count how many clients I have for each condition. For example
0350 - 10 clients.
0126 - 20 clients.
0333 - 08 clients.
I have tried to use CASE WHEN but it does not bring me the complete data, if a client fulfilled two conditions it only adds or counts the first WHEN, the second occurrence is not taken.
Could you help me or guide me how to count correctly in these cases?
This is my database table and the CLIENT field is actually the [ Cliente ID ].
This is my code:
CREATE MULTISET TABLE CONDICIONES_II AS (
SELECT
SUBSTR (FECHA_TRX, 1, 6) AS PERIODO,
SUBSTR (FECHA_TRX, 7, 2) AS DIA,
CASE
WHEN CONDICIONES LIKE ('%0300%') THEN '0300'
WHEN CONDICIONES LIKE ('%0301%') THEN '0301'
WHEN CONDICIONES LIKE ('%0302%') THEN '0302'
WHEN CONDICIONES LIKE ('%0303%') THEN '0303'
WHEN CONDICIONES LIKE ('%0304%') THEN '0304'
WHEN CONDICIONES LIKE ('%0305%') THEN '0305'
WHEN CONDICIONES LIKE ('%0306%') THEN '0306'
WHEN CONDICIONES LIKE ('%0307%') THEN '0307'
WHEN CONDICIONES LIKE ('%0308%') THEN '0308'
WHEN CONDICIONES LIKE ('%0309%') THEN '0309'
WHEN CONDICIONES LIKE ('%0310%') THEN '0310'
WHEN CONDICIONES LIKE ('%0311%') THEN '0311'
WHEN CONDICIONES LIKE ('%0312%') THEN '0312'
WHEN CONDICIONES LIKE ('%0313%') THEN '0313'
WHEN CONDICIONES LIKE ('%0314%') THEN '0314'
WHEN CONDICIONES LIKE ('%0315%') THEN '0315'
WHEN CONDICIONES LIKE ('%0316%') THEN '0316'
WHEN CONDICIONES LIKE ('%0317%') THEN '0317'
WHEN CONDICIONES LIKE ('%0318%') THEN '0318'
WHEN CONDICIONES LIKE ('%0319%') THEN '0319'
WHEN CONDICIONES LIKE ('%0320%') THEN '0320'
WHEN CONDICIONES LIKE ('%0321%') THEN '0321'
WHEN CONDICIONES LIKE ('%0322%') THEN '0322'
WHEN CONDICIONES LIKE ('%0323%') THEN '0323'
WHEN CONDICIONES LIKE ('%0324%') THEN '0324'
WHEN CONDICIONES LIKE ('%0325%') THEN '0325'
WHEN CONDICIONES LIKE ('%0326%') THEN '0326'
WHEN CONDICIONES LIKE ('%0327%') THEN '0327'
WHEN CONDICIONES LIKE ('%0328%') THEN '0328'
WHEN CONDICIONES LIKE ('%0366%') THEN '0366'
WHEN CONDICIONES LIKE ('%0367%') THEN '0367'
WHEN CONDICIONES LIKE ('%0368%') THEN '0368'
WHEN CONDICIONES LIKE ('%0369%') THEN '0369'
WHEN CONDICIONES LIKE ('%0370%') THEN '0370'
WHEN CONDICIONES LIKE ('%0371%') THEN '0371'
WHEN CONDICIONES LIKE ('%0372%') THEN '0372'
END AS CONDICIONES,
SUBSTR (hora_trx, 1, 2) AS HORA,
COUNT (*) AS TRXS, -- This line is to count the times that the condition appears.
COUNT (
DISTINCT SUBSTR (hora_trx, 1, 2)||cod_cliente -- This line is to count the times that the condition appears but only once every hour
) AS UM
FROM
_VIEWS.V_BIGD_DDTT
WHERE
FECHA_TRX >= '20220801'
AND FECREC= '20220801'
GROUP BY
PERIODO,
DIA,
CONDICIONES,
HORA
) WITH DATA;
