SQL Server’da Kolonlar Arası Oran Hesabı Yapmak
Herkese merhaba,
Bu yazıda SQL Server’da kolonlar arası oran hesabı yapmak ile ilgili bilgi vermeye çalışacağım.
SQL Server’da bazı durumlarda iki kolon üzerindeki verileri oranlayarak sonuçları analiz etmek isteyebilirsiniz. Kolon sayısı ikiden fazla da olabilir. Ben iki kolon üzerinden bu işlemi anlatacağım.
Aşağıdaki kodu kullanarak tabloyu oluşturalım ve içine verileri ekleyelim.
--Tablonun oluşturulması
CREATE TABLE OranTablosu
(
ID INT PRIMARY KEY NOT NULL,
ToplamMiktar INT NULL,
Kisi1 INT NULL,
Kisi2 INT NULL
);
--Tabloya veri eklenmesi
INSERT INTO OranTablosu
(
ID,
ToplamMiktar,
Kisi1,
Kisi2
)
VALUES
(1, 22, 17, 5);
INSERT INTO OranTablosu
(
ID,
ToplamMiktar,
Kisi1,
Kisi2
)
VALUES
(2, 20, 15, 5);
INSERT INTO OranTablosu
(
ID,
ToplamMiktar,
Kisi1,
Kisi2
)
VALUES
(3, 12, 5, 7);
INSERT INTO OranTablosu
(
ID,
ToplamMiktar,
Kisi1,
Kisi2
)
VALUES
(4, 10, NULL, 10);
INSERT INTO OranTablosu
(
ID,
ToplamMiktar,
Kisi1,
Kisi2
)
VALUES
(5, 25, 25, NULL);
--Tabloyu görme kodu
SELECT * FROM OranTablosu
Kodu çalıştırınca aşağıdaki tabloyu göreceksiniz.
Yukarıdaki görselde görüldüğü üzere ToplamMiktar kolonu var ve Kisi1 ve Kisi2 kolonları var. Kisi1 ve Kisi2 kolonlarını ToplamMiktar kolonuna göre oranlayalım.
Aşağıdaki kodu çalıştıralım.
--Kolonlar arası oran hesabı
SELECT ID
,ToplamMiktar
,Kisi1
,Kisi2
,CASE
WHEN Kisi1 IS NULL
OR Kisi1 = 0
THEN 0
ELSE CAST((Kisi1 * 100.0) / ToplamMiktar AS DECIMAL(10, 2))
END AS [Kisi1%]
,CASE
WHEN Kisi2 IS NULL
OR Kisi2 = 0
THEN 0
ELSE CAST((Kisi2 * 100.0) / ToplamMiktar AS DECIMAL(10, 2))
END AS [Kisi2%]
FROM OranTablosu
Kodu çalıştırınca aşağıdaki sonucu göreceksiniz.
Görüldüğü üzere Kisi1% ve Kisi2% kolonlarında oranları göstermiş olduk.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.