Teradata count how many times a value appears in a column

Viewed 42

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 ].

enter image description here

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;
0 Answers
Related