Sağlık ve Bilişimde Objektif Haber

  English

SQL UYGULAMALARI - 3

     Sql' li geçen güzel günlerin ardından herkese tekrar merhaba. Bu sayımızda, Oracle Sql cümleleri içerisinde, matematiksel ve karakter  tabanlı fonksiyonları tanıtacağız. Verilen örnekler Çözüm Programlarında F9 Sql işlemlerinde uygulanmıştır.

MOD

MOD (m, n)

m ifadesinin n ifadesine bölümünden kalan değeri döndürür.

SELECT MOD(18,12) as sayi1, MOD(30,12) as sayi2, MOD(30,30) as sayi3 FROM dual

İfadesi çalıştırıldığında

Sayi1

Sayi2

Sayi3

6

6

0

sonucu elde edilir.

SELECT hs_key, hs_ad, hs_soyad FROM hasta
WHERE MOD(hs_key, 100) = 0< /FONT >

İfadesi çalıştırıldığında, dosya numarası 100 ve 100' ün katları olan hasta kayıtları listelenir.

hs_key

hs_ad

hs_soyad

100

Serdar

Somuncuoğlu

200

Esra

Dolaş

300

Hanife

Ulu

Dosya numarası tek olan kayıtları (örneğin 1, 3, 5 ...) listelemek için aşağıdaki sql kullanılabilir.

SELECT hs_key, hs_ad, hs_soyad FROM hasta
WHERE MOD(hs_key, 2)= 1

POWER

POWER (m, n)

n tane m ifadesinin çarpımının sonucunu döndürür.  m, sıfırdan farklı bir değer olmalıdır. m sıfırdan büyük bir değer ise, n sıfırdan büyük veya küçük olabilir. m sıfırdan küçük bir değer ise, n kesirli bir değer olamaz.

SELECT POWER(10,3) AS sayi1, POWER(10, 3) AS sayi2, POWER(10, 3) AS sayi3 FROM dual

İfadesi çalıştırıldığında

Sayi1

Sayi2

Sayi3

1000

-.001

-1000

sonucu elde edilir.

FLOOR

FLOOR (n)

n ifadesine eşit veya n ifadesinden küçük en büyük  tam sayı değeri geri döndürür.

SELECT FLOOR(9.9) AS sayi1, FLOOR(9.9) AS sayi2 FROM dual

İfadesi çalıştırıldığında

Sayi1

Sayi2

9

-10

 

sonucu elde edilir.

CEIL

CEIL (n)


n ifadesine eşit veya n ifadesinden büyük en küçük değeri geri döndürür.

SELECT CEIL (10) AS sayi1, CEIL (10.5) AS sayi2, CEIL(10.5) AS sayi3 FROM dual

İfadesi çalıştırıldığında

Sayi1

Sayi2

Sayi3

10

11

-10

sonucu elde edilir.

(Negatif sayılarda 10, 10.5 ten büyüktür.)

ROUND

ROUND (n, m)

n ile verilen ifadenin değerini yuvarlatır. m sayısal olmalıdır ve belirtilme zorunluluğu yoktur. m değeri negatif olduğunda, n ifadesinin ondalık bölümünün solundan itibaren yuvarlatılma yapılır.

SELECT ROUND(123.45) AS sayi1, ROUND(123.45, 1) AS sayi2, ROUND(123.45, 1) AS sayi3 FROM dual

İfadesi çalıştırıldığında

Sayi1

Sayi2

Sayi3

123

123.5

120

 

sonucu elde edilir.

Hastaların muayene bilgileri HPISLEM tablosunda tutulur. Çıkış zamanları ile giriş zamanları arasındaki saat, dakika ve saniye farkları aşağıdaki sql ifadesi ile bulunabilir.

SELECT ciktarih, girtarih, FLOOR (((ciktarihgirtarih)*24*60*60)/3600)
            || ' Saat ' ||
             FLOOR ((((ciktarihgirtarih)*24*60*60)
             FLOOR (((ciktarihgirtarih)*24*60*60)/3600)*3600)/60)
            || ' Dakika ' ||
             ROUND ((((ciktarihgirtarih)*24*60*60)
              
 FLOOR (((ciktarihgirtarih)*24*60*60)/3600)*3600
               (FLOOR((((ciktarihgirtarih)*24*60*60)
               FLOOR(((ciktarihgirtarih)*24*60*60)/3600)*3600)/60)*60)))
               || ' Saniye ' as fark

CIKTARIH

GIRTARIH

FARK

02.05.2002  09:56:54

01.05.2002  00:28:56

33 Saat 27 Dakika 58 Saniye

02.05.2002  09:54:36

01.05.2002  00:58:10

32 Saat 56 Dakika 26 Saniye

01.05.2002  08:33:45

01.05.2002  02:43:10

5 Saat 50 Dakika 35 Saniye


             
TRUNC

TRUNC (n [, m])

n ile belirtilen değerin rakamlarını keser. m değeri belirtilmek zorunda değildir. Belirtildiğinde, negatif veya pozitif olabilir. Negatif değer belirtildiğinde, ondalık bölümün solundaki rakamlar kesilir.

SELECT TRUNC(99.99) AS sayi1, TRUNC(99.99, 1) AS sayi2, TRUNC(99.99, 1) AS sayi3 FROM dual

İfadesi çalıştırıldığında

Sayi1

Sayi2

Sayi3

99

99.9

90

sonucu elde edilir.

sonucu elde edilir.

GREATEST

GREATEST (ifade [, ifade ...])

Belirtilen ifadelerin en büyüğünü geri döndürür. Bu fonksiyon tarih, sayı ve text ifadelerde kullanılabilir. MAX fonksiyonu ile karıştırılmamalıdır.

SELECT GREATEST(1,2,3) AS sonuc FROM dual

İfadesi çalıştırıldığında

Sonuc
3

sonucu elde edilir.

Tek düzen muhasebe hesap planında, muhasebe hesaplarının alacaklı ya da borçlu olduklarını aşağıdaki sql ifadesi ile sorgulayabiliriz.

SELECT hp_ad, DECODE(GREATEST(hp_atut, hp_btut), hp_atut, 'Alacaklı', hp_btut, 'Borçlu', 'Eşit') AS durumu FOM mhesapları

hp_ad

durumu

Kasa

Borçlu

Alınan Çekler Hesabı

Alacaklı

Bankalar

Borçlu

LEAST

LEAST (ifade [, ifade ...])

Belirtilen ifadelerin en küçüğünü geri döndürür. Bu fonksiyon tarih, sayı ve text ifadelerde kullanılabilir. MIN fonksiyonu ile karıştırılmamalıdır.

SELECT LEAST (1,2,3) AS  sonuc  FROM dual

İfadesi çalıştırıldığında

Sonuc
1

sonucu elde edilir.

Çocuk, genç ve yetişkin hastaların cinsiyetlerine göre sayılarını aşağıdaki sql ifadesi ile öğrenebiliriz.

SELECT DECODE(cinsiyet, 'E', 'Erkek', 'K', 'Kadın') as cinsiyet,
SUM(DECODE(GREATEST (2002TO_CHAR(dogumtarih, 'YYYY'), 41),  LEAST (2002TO_CHAR(dogumtarih, 'YYYY'),100), 1, 0)) " 41100 Yaş",
SUM(DECODE(GREATEST(2002TO_CHAR(dogumtarih,'YYYY'), 13), LEAST(2002TO_CHAR(dogumtarih, 'YYYY'), 40), 1, 0)) " 1340 Yaş",
SUM(DECODE(GREATEST(2002TO_CHAR(dogumtarih,'YYYY'),0), LEAST(2002TO_CHAR(dogumtarih, 'YYYY'), 12), 1, 0)) " 012 Yaş"
FROM hasta
GROUP BY cinsiyet

* (TO_CHAR(dogumtarih, 'YYYY') ile hastanın doğum tarihinin yıl bilgisi alınır)

CINSIYET

41-100 Yaş

13-40 Yaş

 0-12 Yaş

Erkek

18.673

23.408

12.395

Kadın

22.754

25.793

9.737

Karakter Fonksiyonları


CONCAT

CONCAT (ifade1, ifade2)

İfade1 ve ifade2 yi birleştirir. || ile aynı işleve sahiptir.

SELECT CONCAT('Sql ', 'Uygulamaları') AS sonuc1, 'Sql ' || 'Uygulamaları' AS sonuc2 FROM dual

İfadesi çalıştırıldığında

Sonuc1

Sonuc2

Sql Uygulamaları

Sql Uygulamaları

 

sonucu elde edilir.

INITCAP

INITCAP (ifade)

Verilen ifade içerisindeki tüm kelimelerin ilk harfini büyütür, diğer harflerini küçültür.

SELECT 'sql uYGULAMALARI' as ornek, INITCAP ('sql uYGULAMALARI') AS sonuc FROM dual

İfadesi çalıştırıldığında

Ornek

Sonuc

sql uYGULAMALARI

Sql Uygulamaları

sonucu elde edilir.

UPPER

UPPER (ifade)

Verilen ifade içerisindeki tüm karakterleri büyütür.

SELECT ‘sql uygulamaları’ as ornek, UPPER ('sql uygulamaları') AS sonuc FROM dual

İfadesi çalıştırıldığında

Ornek

Sonuc

sql uygulamaları

SQL UYGULAMALARI

sonucu elde edilir.

LOWER

LOWER (ifade)

Verilen ifade içerisindeki tüm karakterleri küçültür.

SELECT 'SQL UYGULAMALARI’ as ornek, LOWER ('SQL UYGULAMALARI’) AS sonuc FROM dual

İfadesi çalıştırıldığında

Ornek

Sonuc

SQL UYGULAMALARI

sql uygulamaları

sonucu elde edilir.

TRIM

TRIM (karakter FROM ifade)

Verilen ifadenin başındaki ve sonundaki 'karakter' leri siler. Karakter belirtilmediği zaman FROM komutu kullanılmaz, ifadenin başındaki ve sonundaki boşlukları siler.

SELECT '    Sql Uygulamaları  ' as ornek, TRIM ('    Sql Uygulamaları  ') AS sonuc FROM dual

İfadesi çalıştırıldığında

Ornek

Sonuc

Sql Uygulamaları

Sql Uygulamaları

 

sonucu elde edilir.

SELECT ‘0009872348900’ as ornek, TRIM (0 FROM 0009872348900) AS sonuc FROM DUAL

İfadesi çalıştırıldığında

Ornek

Sonuc

0009872348900

987234489

 

Sonucu elde edilir.

Başında veya sonunda boşluk olan servis kodlarını bulmak için aşağıdaki sql kullanılabilir.

SELECT serviskod, servisad FROM servis
WHERE TRIM(serviskod) <> serviskod

Yukarıdaki sql ifadesinin bir benzeri, hasta adı ve soyadı için kullanılabilir.

SELECT hs_key, hs_ad, trim(hs_ad) as sonuc FROM hasta WHERE TRIM(hs_ad) <> hs_ad

İfadesi çalıştırıldığında

Hs_key

Hs_ad

Sonuc

8613

İsmail Vedat

İsmail Vedat

13896

Ali Kemal

Ali Kemal

84507

S Handan

S Handan

 

sonucu elde edilir. Sonuçlar incelendiğinde, hasta adı veya soyadının başında veya sonunda boşluk olduğu görülecektir.

LENGTH

LENGTH (ifade)

Verilen ifadenin uzunluğunu döndürür.

SELECT ‘Sql Uygulamaları’ as ornek, LENGTH('Sql Uygulamaları') AS sonuc FROM dual

İfadesi çalıştırıldığında

Ornek

Sonuc

Sql Uygulamaları

16

sonucu elde edilir.

En uzun hasta adını bulmak için aşağıdaki sql çalıştırılır.

SELECT hs_ad, length(hs_ad) as uzunluk from hasta where length(hs_ad) = (select max(length(hs_ad)) from hasta)

Hs_ad

Uzunluk

Nazile Bebek Erkek

18