Самое чистое (и правильное) решение для кросс-потоковых проблем UI - использовать SynchronizationContext, см. Синхронизация вызовов с пользовательским интерфейсом в статье с несколькими потоками , это очень хорошо объясняет.
Вы можете использовать оператор CASE
, чтобы сделать это
select count(id) as id_name,
case when category = 'Laki-laki' then 'Umum' else category end as media
from tb_gadar
where d BETWEEN '2018-04-01' and '2019-12-31'
and category in ('Laki-laki','Perempuan')
group by category