Hasil agregasi di SQL (bigquery) tidak sama dengan yang seharusnya

Dataset a berisi jumlah faskes per kabupaten/kota dimana faskes ini terdiri dari beberapa jenis dan data ini ada untuk tahun 2018-2021 Dataset b berisi luas wilayah per desa/kelurahan, namun ada juga informasi kabupaten/kota, bahkan kecamatan setiap desa/kelurahan dan data ini hanya ada di tahun 2020 (dataset diambil dari open data jabar)

query saya:

SELECT
a.nama_kabupaten_kota AS kabupaten_kota,
SUM(a.jumlah_faskes) AS jumlah_faskes,
ROUND(SUM(b.luas_wilayah),2) AS luas_kabupaten_kota
FROM `jabar.jumlah faskes 2018-2021` AS a
LEFT JOIN
`jabar.luas wilayah 2020` AS b
ON a.kode_kabupaten_kota = b.bps_kode_kabupaten_kota
WHERE a.tahun = 2020
GROUP BY kabupaten_kota

Hasil penjumlahannya tidak sesuai dengan hasil hitung manual saya menggunakan excel (lebih besar hasil di bigquery). Saya memang baru belajar SQL. Apakah ada query yang keliru?

avatar veraa
@veraa

3 Kontribusi 0 Poin

Diperbarui 1 tahun yang lalu

Tanggapan

coba di format lebih baik ya, yang bukan kode jangan dimasukkans ebagai kode di pertanyaannya agar mudah dibaca

Iyaa saya baru di sini jadi masih menyesuaikan. Terima kasih

Halo selamat bergabung. Coba dijelaskan dulu "hasil yang diinginkan apa" ? kita bingung mau membenarkan apa kalau tidka tahu tujuannya

2 Jawaban:

Jawaban Terpilih

coba ini bro

SELECT
  a.nama_kabupaten_kota AS kabupaten_kota,
  SUM(a.jumlah_faskes) AS jumlah_faskes,
  ROUND(b.luas_kabupaten_kota, 2) AS luas_kabupaten_kota
FROM `jabar.jumlah faskes 2018-2021` AS a
LEFT JOIN (
  SELECT bps_kode_kabupaten_kota, SUM(luas_wilayah) AS luas_kabupaten_kota
  FROM `jabar.luas wilayah 2020`
  GROUP BY bps_kode_kabupaten_kota
) AS b
ON a.kode_kabupaten_kota = b.bps_kode_kabupaten_kota
WHERE a.tahun = 2020
GROUP BY kabupaten_kota, luas_kabupaten_kota

avatar adamajalah27
@adamajalah27

119 Kontribusi 40 Poin

Dipost 1 tahun yang lalu

Tanggapan

thank you bro. It works, alhamdulillah

Jadi ini mau membuat tabel dengan 3 kolom, yaitu kolom kabupaten/kota, jumlah faskes, dan luas wilayah. Hanya saja di dataset a, ada 4 jenis faskes di setiap kabupaten/kota dan di dataset b ada kolom kecamatan dan kelurahan/desa di setiap kabupaten/kota jadi itu memengaruhi penjumlahannya.

Selain jawaban dari @adamajalah27, saya juga ada query yang also work

SELECT
a.kabupaten_kota,
a.jumlah_faskes,
b.luas_wilayah
FROM (
  SELECT a.kode_kabupaten_kota AS id,
  a.nama_kabupaten_kota AS kabupaten_kota, 
  SUM(a.jumlah_faskes) AS jumlah_faskes
  FROM `jabar.jumlah faskes 2018-2021` AS a
  WHERE a.tahun = 2020
  GROUP BY kabupaten_kota, id
) AS a
LEFT JOIN (
  SELECT b.bps_kode_kabupaten_kota AS id,
  b.bps_nama_kabupaten_kota AS kabupaten_kota, 
  ROUND(SUM(b.luas_wilayah),2) AS luas_wilayah
  FROM `jabar.luas wilayah 2020` AS b
  GROUP BY kabupaten_kota, id
) AS b
ON a.id = b.id

thank you all

avatar veraa
@veraa

3 Kontribusi 0 Poin

Dipost 1 tahun yang lalu

Login untuk ikut Jawaban