Tam Sayı ve Ondalık Bölme
Tür dönüştürmeyle şaşırtıcı sonuçlardan kaçının.
Tam Sayı ve Ondalık Bölme, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Academy kursu toplamda 4 dersten oluşur.
Şaşırtıcı Bir Sonuç
Bir bilmeceyle başlayalım. Aşağıdaki sorgunun ne döndüreceğini düşünüyorsunuz?
0.5 bekliyorsanız şaşırabilirsiniz. Birçok SQL veritabanında iki tam sayının bölünmesi tam sayı sonucu verir; ondalık kısım tamamen atılır.
SELECT 1 / 2 AS result;Tam Sayı Bölmesi Açıklaması
Bir bölme işlemindeki her iki işlenen de tam sayı olduğunda SQL tam sayı bölmesi gerçekleştirir. Sonuç sıfıra doğru kesilir; yuvarlama yapılmaz, yalnızca tam sayı kısmı alınır.
Bu nedenle 1 / 2 = 0, 7 / 3 = 2 ve 9 / 4 = 2 olur. Kesirli kısım sessizce atılır.
SELECT 7 / 3 AS truncated_result;Daha Fazla Tam Sayı Bölmesi Örneği
Burada tek bir sorguda birkaç tam sayı bölmesi örneği yer alıyor. Tüm sonuçların ondalık kısımlarını nasıl kaybettiğine dikkat edin. Bu davranış, yalnızca tam sayı sabitlerini veya tam sayı sütunlarını içeren ifadelerde tutarlıdır.
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;CAST ile Düzeltme
Ondalık bölmeyi zorlamanın en güvenilir yolu, en az bir işleneni ondalık bir türe dönüştürmektir. CAST(value AS DECIMAL) veya CAST(value AS NUMERIC), SQL'e sayıyı kayan noktalı bir değer olarak ele almasını söyler; böylece bölme işlemi kesin bir sonuç döndürür.
SELECT CAST(1 AS DECIMAL) / 2 AS result;Her İki Tarafı CAST ile Dönüştürme
Ondalık bir sonuç elde etmek için bölmenin yalnızca bir tarafını dönüştürmeniz yeterlidir; SQL diğer işleneni otomatik olarak daha üst bir türe dönüştürür. Ancak her iki tarafı dönüştürmek niyeti açıkça ortaya koyar ve kodu daha sonra okurken oluşabilecek karışıklığı önler.
SELECT
CAST(7 AS DECIMAL) / CAST(3 AS DECIMAL) AS both_cast,
CAST(7 AS DECIMAL) / 3 AS one_cast;Ondalık Sabit Değer Kullanma
Başka bir hızlı yöntem, bir işlenene .0 ekleyerek onu ondalık sabit değer olarak yazmaktır. SQL 1.0 değerini ondalık sayı olarak görür; bu da ifadenin tamamında ondalık aritmetiği zorunlu kılar.
Bu, hızlı geçici sorgular için kullanışlıdır; ancak üretim kodunda CAST daha anlaşılırdır.
SELECT 1.0 / 2 AS decimal_result,
7.0 / 3 AS another_result;Gerçek Dünya Sorunu: Sütun Verileri
Asıl sorun tam sayı sütunlarıyla çalışırken ortaya çıkar. Satış hedeflerini izleyen bir tablo düşünün. Tam sayı sütunlarını bölmek tam sayı sonuçları üretir; olması gereken 0.75 iken 0 dönüşüm oranı elde edilir!
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;Sütun Bölmesini Düzeltme
Pay sütununa CAST uyguladığınızda bölme işlemi artık gerçek dönüşüm oranını ondalık olarak döndürür. Payda otomatik olarak ondalık türe yükseltilir.
Sonrasında 100.0 ile çarpmak, işlem boyunca ondalık aritmetik kullanmaya devam ederek sonucu yüzde olarak verir.
SELECT rep,
CAST(achieved AS DECIMAL) / target AS conversion_rate,
CAST(achieved AS DECIMAL) / target * 100.0 AS pct
FROM sales_targets;Ondalık Hassasiyetini Denetleme
Dönüştürme işleminde hassasiyet ve ölçek belirleyerek kaç ondalık basamağın saklanacağını denetleyebilirsiniz: DECIMAL(10, 2), toplamda en fazla 10 basamak ve ondalık noktadan sonra 2 basamak anlamına gelir. Bu, çok sayıda sondaki basamak yerine düzenli ve yuvarlanmış bir çıktı istediğinizde kullanışlıdır.
SELECT CAST(CAST(1 AS DECIMAL(10,4)) / 3 AS DECIMAL(10,2)) AS rounded_result;Bölmeden Sonra ROUND
Bazen işlemleri içeride tam hassasiyetle yapıp ardından son görüntülenen değeri yuvarlamak istersiniz. ROUND işlevi, değeri ve korumak istediğiniz ondalık basamak sayısını alır.
Her zaman önce ondalık aritmetik kullanarak bölün, ardından yuvarlayın — bölmeden önce asla yuvarlamayın.
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;Tamsayı Bölmesi Yararlı Olabilir
Tamsayı bölmesi her zaman bir hata değildir; bazen tam olarak ihtiyacınız olan şeydir. Örneğin toplam dakika sayısını tam saatlere dönüştürmek için tamsayı bölmesi bilinçli olarak kullanılır. Önemli olan, tamsayı veya ondalık bölmeyi farkında olmadan seçmek yerine bilinçli olarak tercih etmektir.
SELECT
137 / 60 AS full_hours,
137 % 60 AS remaining_minutes;Hızlı Sınama
SQL'de tamsayı ve ondalık bölme konusundaki anlayışınızı sınayın.
Ders Özeti
Bu derste SQL'in tamsayılar arasındaki bölmeyi nasıl işlediğini öğrendiniz:
- Tamsayı / Tamsayı sonucu keser; ondalık kısım sessizce kaybolur.
- Ondalık bölmeyi zorlamak için işlenenlerden en az birine
CAST(value AS DECIMAL)uygulayın. 1.0gibi bir ondalık sabit yazmak da ifadeyi ondalık aritmetiğe yükseltir.- Görüntülenen ondalık basamak sayısını denetlemek için bölmeden sonra
ROUNDkullanın. - Tamsayı bölmesi bazen bilinçli olarak kullanılır (örneğin dakikaları saatlere dönüştürürken); ancak bunu her zaman yanlışlıkla değil, bilinçli bir seçim olarak yapın.
Tamsayı sütunlarını böldüğünüzde bu tuzağa dikkat edin; bu, SQL sorgularındaki sessiz ve fark edilmesi zor hataların en yaygın kaynaklarından biridir.
Sıkça Sorulan Sorular
“Tam Sayı ve Ondalık Bölme” dersi ücretsiz mi?
Evet — “Tam Sayı ve Ondalık Bölme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Academy kursu toplamda 4 dersten oluşur.
“Tam Sayı ve Ondalık Bölme” dersinde ne öğreneceğim?
Tür dönüştürmeyle şaşırtıcı sonuçlardan kaçının. SQL Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
SQL Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te SQL Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Tam Sayı ve Ondalık Bölme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu SQL Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her SQL Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Aritmetik ve İşleçler
- Yuvarlama ve Kesme
- Tam Sayı ve Ondalık Bölme
- Yararlı Matematik İşlevleri