Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengira Keputusan Pembahagian Integer dengan Betul dalam PostgreSQL untuk Mengelakkan Pemangkasan?

Bagaimanakah Saya Boleh Mengira Keputusan Pembahagian Integer dengan Betul dalam PostgreSQL untuk Mengelakkan Pemangkasan?

DDD
DDDasal
2024-12-17 10:39:24202semak imbas

How Can I Correctly Calculate the Result of Integer Division in PostgreSQL to Avoid Truncation?

Bahagian ( / ) Salah mengira dalam PostgreSQL

Anda menghadapi isu pembahagian dalam PostgreSQL di mana pembahagian integer menghasilkan jawapan yang tidak tepat. Mari kita mendalami latar belakang dan sediakan penyelesaian yang menangani masalah itu.

Memahami Pembahagian Integer

Bahagian integer, dilambangkan dengan "/", memotong hasil bahagi ke arah sifar. Ini bermakna apabila membahagikan dua integer, hasilnya dibundarkan ke bawah kepada nombor bulat terdekat.

Dalam contoh yang diberikan, "kos_dev" dan "kos_jual" ialah kedua-dua integer. Oleh itu, pertanyaan "select dev_cost / sell_cost" mengembalikan 2, iaitu bersamaan integer 16000 dibahagikan dengan 7500. Walau bagaimanapun, anda memerlukan kuantiti perisian untuk memulihkan dev_cost, iaitu 3.

Menyelesaikan Isu Pengiraan

Untuk mendapatkan yang tepat nilai, kita perlu memastikan bahawa sekurang-kurangnya satu operan dalam pembahagian ialah titik terapung atau nilai perpuluhan. Ini menghalang pemangkasan dan menghasilkan hasil bahagi pecahan.

Satu penyelesaian ialah menghantar salah satu lajur kepada perpuluhan menggunakan pengendali "CAST":

select cast(dev_cost as decimal) / sell_cost from software ;

Alternatif lain ialah menggunakan Sintaks "::decimal" untuk menghantar lajur dev_cost:

select dev_cost::decimal / sell_cost from software ;

Kedua-dua pendekatan ini akan mengembalikan hasil titik terapung, mewakili kuantiti tepat perisian yang diperlukan.

Membundar Hingga Integer Terdekat

Jika anda ingin membundarkan hasil kepada integer terdekat, mewakili kuantiti minimum perisian untuk memulihkan dev_cost, anda boleh menggunakan fungsi "CEIL":

select ceil(dev_cost::decimal / sell_cost) from software ;

Ini akan membundarkan hasil perpuluhan kepada nombor bulat seterusnya, memastikan perisian yang mencukupi dijual untuk menampung kos pembangunan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengira Keputusan Pembahagian Integer dengan Betul dalam PostgreSQL untuk Mengelakkan Pemangkasan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn