query(" SELECT w.nama, w.jumlah_penduduk, COUNT(DISTINCT wm.id) AS miskin, COUNT(DISTINCT CASE WHEN bs.id IS NOT NULL THEN wm.id END) AS dibantu, COUNT(DISTINCT CASE WHEN wm.status_verifikasi='terverifikasi' THEN wm.id END) AS terverif FROM wilayah w LEFT JOIN warga_miskin wm ON ST_Contains(w.geom, wm.geom) LEFT JOIN bantuan_sosial bs ON bs.warga_id = wm.id AND bs.is_aktif=1 GROUP BY w.id ORDER BY w.nama ")->fetchAll(); $labels = []; $persenMiskin = []; $cakupan = []; $jumlahMiskin = []; $persenVerif = []; foreach ($rows as $r) { $miskin = (int)$r['miskin']; $penduduk = (int)$r['jumlah_penduduk']; $labels[] = $r['nama']; $persenMiskin[] = $penduduk > 0 ? round($miskin / $penduduk * 100, 2) : 0; $cakupan[] = $miskin > 0 ? round($r['dibantu'] / $miskin * 100, 1) : 0; $jumlahMiskin[] = $miskin; $persenVerif[] = $miskin > 0 ? round($r['terverif'] / $miskin * 100, 1) : 0; } sendSuccess([ 'labels' => $labels, 'persentase_miskin' => $persenMiskin, 'cakupan_bantuan' => $cakupan, 'jumlah_miskin' => $jumlahMiskin, 'persen_verifikasi' => $persenVerif, ], 'Komparatif Wilayah');