I need to select random groups of data
I'm not entirely clear on whether I understand you problem or not, but  assuming there is a customer_id attribute you can partition by that:

select ... from (
    select ..., row_number() over (partition by customer_id) as rn
    from ...
)
where rn = 1


This will give you one row per customer, in an undefined order. If you want a true random account per customer you can add order by some random function after partition by:

    select ..., row_number() over (partition by customer_id
                                   order by ...) as rn