0Pricing
SQL Academy · Pelajaran

Pembagian Bilangan Bulat vs Desimal

Hindari hasil yang mengejutkan dengan casting.

Pembagian Bilangan Bulat vs Desimal adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.

Hasil yang Mengejutkan

Mari kita mulai dengan teka-teki. Menurut Anda, apa yang dikembalikan kueri berikut?

Jika Anda mengharapkan 0.5, Anda mungkin akan terkejut. Dalam banyak basis data SQL, membagi dua bilangan bulat menghasilkan bilangan bulat — bagian desimalnya dibuang sepenuhnya.

SELECT 1 / 2 AS result;

Pembagian Bilangan Bulat Dijelaskan

Ketika kedua operan dalam pembagian berupa bilangan bulat, SQL melakukan pembagian bilangan bulat. Hasilnya dipotong menuju nol — bukan dibulatkan, hanya bagian bilangan bulatnya yang diambil.

Jadi, 1 / 2 = 0, 7 / 3 = 2, dan 9 / 4 = 2. Bagian pecahannya dibuang secara diam-diam.

SELECT 7 / 3 AS truncated_result;

Contoh Pembagian Bilangan Bulat Lainnya

Berikut beberapa contoh pembagian bilangan bulat dalam satu kueri. Perhatikan bahwa semua hasil kehilangan bagian desimalnya. Perilaku ini konsisten pada ekspresi yang hanya melibatkan nilai literal bilangan bulat atau kolom bilangan bulat.

SELECT
  10 / 4  AS ten_div_four,
  9  / 2  AS nine_div_two,
  1  / 3  AS one_div_three,
  6  / 6  AS six_div_six;

Memperbaikinya dengan CAST

Cara paling andal untuk memaksa pembagian desimal adalah mengonversi setidaknya satu operan ke tipe desimal. CAST(value AS DECIMAL) atau CAST(value AS NUMERIC) memberi tahu SQL untuk memperlakukan angka tersebut sebagai nilai pecahan, sehingga pembagian menghasilkan nilai yang presisi.

SELECT CAST(1 AS DECIMAL) / 2 AS result;

Menggunakan CAST pada Kedua Sisi

Anda hanya perlu mengonversi satu sisi pembagian untuk mendapatkan hasil desimal — SQL akan mengonversi operan lainnya secara otomatis. Namun, mengonversi kedua sisi membuat maksudnya jelas dan mencegah kebingungan saat kode dibaca kembali nanti.

SELECT
  CAST(7 AS DECIMAL) / CAST(3 AS DECIMAL) AS both_cast,
  CAST(7 AS DECIMAL) / 3                   AS one_cast;

Menggunakan Nilai Literal Desimal

Trik cepat lainnya adalah menulis salah satu operan sebagai nilai literal desimal dengan menambahkan .0. SQL mengenali 1.0 sebagai angka desimal, yang memaksa seluruh ekspresi menggunakan aritmetika desimal.

Ini berguna untuk kueri sementara yang dibuat dengan cepat, meskipun CAST lebih jelas dalam kode produksi.

SELECT 1.0 / 2  AS decimal_result,
       7.0 / 3  AS another_result;

Jebakan Dunia Nyata: Data Kolom

Masalah ini benar-benar terasa saat bekerja dengan kolom bilangan bulat. Bayangkan tabel untuk melacak sales_targets. Membagi kolom bilangan bulat menghasilkan nilai bilangan bulat — tingkat konversi menjadi 0 padahal seharusnya 0.75!

CREATE TABLE sales_targets (
  rep         TEXT,
  achieved    INT,
  target      INT
);

INSERT INTO sales_targets VALUES
  ('Alice', 75, 100),
  ('Bob',   3,  4),
  ('Carol', 9,  10);

SELECT rep,
       achieved / target AS wrong_rate
FROM   sales_targets;

Memperbaiki Pembagian Kolom

Terapkan CAST pada kolom pembilang, dan pembagian kini mengembalikan tingkat konversi sebenarnya dalam bentuk desimal. Penyebut akan dipromosikan secara otomatis.

Mengalikan dengan 100.0 setelahnya menghasilkan persentase—tetap menggunakan aritmetika desimal di seluruh proses.

SELECT rep,
       CAST(achieved AS DECIMAL) / target          AS conversion_rate,
       CAST(achieved AS DECIMAL) / target * 100.0  AS pct
FROM   sales_targets;

Mengendalikan Presisi Desimal

Anda dapat mengontrol jumlah tempat desimal yang disimpan dengan menentukan presisi dan skala pada operasi CAST: DECIMAL(10, 2) berarti maksimal 10 digit secara keseluruhan, dengan 2 digit setelah tanda desimal. Ini berguna jika Anda menginginkan tampilan yang rapi dan dibulatkan, bukan banyak digit di belakang koma.

SELECT CAST(CAST(1 AS DECIMAL(10,4)) / 3 AS DECIMAL(10,2)) AS rounded_result;

ROUND Setelah Pembagian

Terkadang Anda ingin menghitung dengan presisi penuh secara internal, lalu membulatkan nilai tampilan akhir. Fungsi ROUND menerima nilai dan jumlah tempat desimal yang ingin dipertahankan.

Selalu lakukan pembagian terlebih dahulu (menggunakan aritmetika desimal), lalu bulatkan—jangan pernah membulatkan sebelum membagi.

SELECT
  ROUND(CAST(1 AS DECIMAL) / 3, 4)  AS four_places,
  ROUND(CAST(1 AS DECIMAL) / 3, 2)  AS two_places,
  ROUND(CAST(1 AS DECIMAL) / 3, 0)  AS zero_places;

Pembagian Bilangan Bulat Bisa Berguna

Pembagian bilangan bulat tidak selalu merupakan kesalahan—terkadang justru itulah yang Anda perlukan. Misalnya, mengubah jumlah menit menjadi jam utuh menggunakan pembagian bilangan bulat secara sengaja. Kuncinya adalah memilih pembagian bilangan bulat atau desimal secara sadar, bukan menggunakannya tanpa sengaja.

SELECT
  137 / 60  AS full_hours,
  137 % 60  AS remaining_minutes;

Pemeriksaan Singkat

Uji pemahaman Anda tentang pembagian bilangan bulat dan desimal dalam SQL.

Ringkasan Pelajaran

Dalam pelajaran ini Anda mempelajari cara SQL menangani pembagian antara bilangan bulat:

  • Bilangan bulat / Bilangan bulat memotong hasil—bagian desimal hilang tanpa disadari.
  • Gunakan CAST(value AS DECIMAL) pada setidaknya satu operan untuk memaksa pembagian desimal.
  • Menuliskan literal desimal seperti 1.0 juga mengubah ekspresi menjadi aritmetika desimal.
  • Gunakan ROUND setelah pembagian untuk mengontrol jumlah tempat desimal yang ditampilkan.
  • Pembagian bilangan bulat terkadang memang disengaja (misalnya, untuk mengubah menit menjadi jam), tetapi selalu jadikan ini pilihan sadar, bukan kebetulan.

Waspadai jebakan ini setiap kali Anda membagi kolom bilangan bulat—ini adalah salah satu sumber bug paling umum yang terjadi secara diam-diam dan sulit ditemukan dalam kueri SQL.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pembagian Bilangan Bulat vs Desimal” gratis?

Ya — teks lengkap “Pembagian Bilangan Bulat vs Desimal” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Pembagian Bilangan Bulat vs Desimal”?

Hindari hasil yang mengejutkan dengan casting. Kamu berlatih SQL Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai SQL Academy?

Tidak diperlukan pengalaman sebelumnya. SQL Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Pembagian Bilangan Bulat vs Desimal” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Academy ini?

Ya. Setiap pelajaran SQL Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Aritmetika dan Operator
  2. Pembulatan dan Pemotongan
  3. Pembagian Bilangan Bulat vs Desimal
  4. Fungsi Matematika yang Berguna
← Kembali ke SQL Academy