SQL Hasta-Personel Veri Tabanı Uygulaması #2
Bu yazıda sizlere bir önceki yazıda oluşturduğumuz veri tabanı üzerinde çeşitli örnek uygulamalardan bahsedeceğim.
Örnek 1: Veri tabanında yer alan tablolar arasındaki ilişkileri kurunuz.
Örnek 2: Personel tablosunda mesleği danışman olan personellerin maaşlarını 3500 TL olarak güncelleyelim.
USE Hasta_Personel_Veri_Tabani
UPDATE PersonelTablosu SET Maas = Maas + 300 WHERE MESLEK = 5
SELECT * FROM PersonelTablosu
Örnek 3: Personel tablosunda maaşı 4000-9000 TL arasında olan ve cinsiyeti erkek olan personelleri listeleyelim.
USE Hasta_Personel_Veri_Tabani
SELECT * FROM PersonelTablosu WHERE Maas BETWEEN 4000 AND 9000 AND Cinsiyet = 'E'
Örnek 4: Hasta tablosunda isminde E harfi geçen ama H harfi geçmeyen ve ziyarete uygun olan hastalarını listeleyelim.
USE Hasta_Personel_Veri_Tabani
SELECT * FROM HastaTablosu WHERE Ad_Soyad LIKE '%E%' AND Ad_Soyad NOT LIKE '%H%' AND ZiyaretDurumu = 1
Örnek 5: Personel tablosundaki toplam maaşı ve ortalama yaşı listeleyelim.
INPUT:
USE Hasta_Personel_Veri_Tabani
SELECT AVG(Yas) FROM PersonelTablosu
OUTPUT:
36
INPUT:
USE Hasta_Personel_Veri_Tabani
SELECT SUM(Maas) FROM PersonelTablosu
OUTPUT:
140800.00
Örnek 6: Hasta tablosunda vefat eden hastaların ortalama yaşını listeleyelim.
INPUT:
USE Hasta_Personel_Veri_Tabani
SELECT AVG(Yas) FROM HastaTablosu WHERE SaglıkDurumu = 4
OUTPUT:
63
Örnek 7: Hasta tablosunda sağlık durumu kritik olan hastalarımızın sayısını listeleyelim.
INPUT:
USE Hasta_Personel_Veri_Tabani
SELECT COUNT(*) FROM HastaTablosu WHERE SaglıkDurumu = 3
OUTPUT:
7
Örnek 8: Personel tablosundaki en yaşlı ve en genç personelleri listeleyelim.
USE Hasta_Personel_Veri_Tabani
SELECT * FROM PersonelTablosu WHERE Yas = (SELECT MIN(Yas) FROM PersonelTablosu )
USE Hasta_Personel_Veri_Tabani
SELECT * FROM PersonelTablosu WHERE Yas = (SELECT MAX(Yas) FROM PersonelTablosu )
Örnek 9: Alt sorguları kullanarak personel tablosunda mesleği göz doktoru olan personelleri listeleyiniz.
INPUT:
USE Hasta_Personel_Veri_Tabani
SELECT AdSoyad,MeslekAdi FROM PersonelTablosu
INNER JOIN MeslekTablosu ON PersonelTablosu.Meslek = MeslekTablosu.ID
WHERE MeslekAdi = (SELECT MeslekAdi FROM MeslekTablosu WHERE ID = 13)
OUTPUT:
Atahan Adanır Göz Doktoru
Örnek 10: Personel tablosunda meslek adları yazacak şekilde Güvenlik personellerinin isimlerini ve mesleklerini listeleyelim.
INPUT:
USE Hasta_Personel_Veri_Tabani
SELECT AdSoyad,MeslekAdi FROM PersonelTablosu
INNER JOIN MeslekTablosu ON PersonelTablosu.Meslek = MeslekTablosu.ID
WHERE MeslekAdi = 'Güvenlik Görevlisi'
Örnek 11: Personel tablosundaki tüm sütunlar için birleştirmeleri gerçekleştirelim.
CREATE VIEW View_1
AS
SELECT AdSoyad,Maas,Yas,Cinsiyet,SehirAdi,OgrenimTuru,MeslekAdi,HastalikAdi,MedeniHal,CocukSayisi,Calisma_Durumu,KademeAdi From PersonelTablosu
INNER JOIN MeslekTablosu ON PersonelTablosu.Meslek = MeslekTablosu.ID
INNER JOIN SehirTablosu ON PersonelTablosu.Sehir = SehirTablosu.ID
INNER JOIN OgrenimTablosu ON PersonelTablosu.Ögrenim = OgrenimTablosu.ID
INNER JOIN HastalikTablosu ON PersonelTablosu.HastalikTürü = HastalikTablosu.ID
INNER JOIN MedeniDurumTablosu ON PersonelTablosu.MedeniDurum = MedeniDurumTablosu.ID
INNER JOIN CalismaTablosu ON PersonelTablosu.CalismaDurumu = CalismaTablosu.ID
INNER JOIN PersonelKademeTablosu ON PersonelTablosu.Kademe = PersonelKademeTablosu.ID
SELECT * FROM View_1
Örnek 12: Hasta tablosundaki ad, hastalık, medeni durum,İlgilenenPersonel, SaglıkDurumu, ZiyaretDurumu ve HastanınBulunduğuKonum için birleştirmeleri gerçekleştirelim.
CREATE VIEW View_2
AS
SELECT Ad_Soyad,HastalikAdi,MedeniHal,AdSoyad,Saglik_Durumu,Ziyaret_Durumu,Konum From HastaTablosu
INNER JOIN HastalikTablosu ON HastaTablosu.Hastalik = HastalikTablosu.ID
INNER JOIN MedeniDurumTablosu ON HastaTablosu.MedeniDurum = MedeniDurumTablosu.ID
INNER JOIN PersonelTablosu ON HastaTablosu.İlgilenenPersonel = PersonelTablosu.ID
INNER JOIN SaglikTablosu ON HastaTablosu.SaglıkDurumu = SaglikTablosu.ID
INNER JOIN ZiyaretTablosu ON HastaTablosu.ZiyaretDurumu = ZiyaretTablosu.ID
INNER JOIN HastaKonumTablosu ON HastaTablosu.HastanınBulunduğuKonum = HastaKonumTablosu.ID
Örnek 13: Personel tablosundan eğitimi Lisans mezunu olan ve hali hazırda çalışıyor olan personellerin adlarını, yaşlarını, cinsiyetlerini, maaşlarını ve mesleklerini listeleyelim.
USE Hasta_Personel_Veri_Tabani
SELECT AdSoyad,Yas,Cinsiyet,Maas,MeslekAdi FROM PersonelTablosu
INNER JOIN MeslekTablosu ON PersonelTablosu.Meslek = MeslekTablosu.ID
WHERE Ögrenim = 5 AND CalismaDurumu = 1
Örnek 14: Hasta tablosunda yer alan hastalarımızı sağlık durumlarına göre gruplayalım. Sağlık durumlarını z’den a’ya doğru sıralayalım
USE Hasta_Personel_Veri_Tabani
SELECT Saglik_Durumu,COUNT(*) AS 'Sayısı' FROM HastaTablosu
INNER JOIN SaglikTablosu ON HastaTablosu.SaglıkDurumu = SaglikTablosu.ID
GROUP BY Saglik_Durumu ORDER BY Saglik_Durumu DESC
Örnek 15: Personel tablosundaki personelleri kademelerine göre gruplayıp, üst kademe olan personelleri listeleyelim.
USE Hasta_Personel_Veri_Tabani
SELECT KademeAdi,COUNT(*) AS 'Sayısı' FROM PersonelTablosu
INNER JOIN PersonelKademeTablosu ON PersonelTablosu.Kademe = PersonelKademeTablosu.ID
GROUP BY KademeAdi HAVING KademeAdi= 'Üst'
Örnek 16: Personel tablosunda mesleği göz doktoru olan personellerin maaşına 500 TL zam yapalım.
USE Hasta_Personel_Veri_Tabani
UPDATE PersonelTablosu SET Maas = Maas + Maas*0.30 WHERE Meslek = 19
SELECT * FROM PersonelTablosu Where Meslek = 19
Örnek 17: Başhekim’in maaşını maksimum maaş tutarının 1000 TL fazlasına göre güncelleyelim.
USE Hasta_Personel_Veri_Tabani
UPDATE PersonelTablosu SET Maas = (SELECT Max(Maas) FROM PersonelTablosu) + 1000 WHERE Meslek = 16
SELECT * FROM PersonelTablosu Where Meslek = 16
Örnek 18: Personel tablomuzdaki tüm isimleri tersten yazan sorguyu yazalım.
USE Hasta_Personel_Veri_Tabani
SELECT AdSoyad,REVERSE(AdSoyad) AS 'Tersten Yazımı' FROM PersonelTablosu
Örnek 19: Personel tablomuzdaki personellerimizin maaşlarının standart sapmalarını hesaplayalım.
INPUT:
DECLARE @sayi1 Decimal(15,2), @sayi2 Decimal(15,2), @standartSapma Decimal(15,2)
SET @sayi1 = (SELECT AVG(Maas) from PersonelTablosu)
SET @sayi2 = (SELECT SUM(POWER((Maas-@sayi1),2)) from PersonelTablosu)
SET @standartSapma = (SELECT SQRT(@sayi2/20))
PRINT @standartSapma
OUTPUT:
3863.48
Örnek 20: Hasta tablomuzdaki 45 yaşından küçük olan hasta kadınların sağlık durumlarını listeleyen sorguyu yazalım.
USE Hasta_Personel_Veri_Tabani
SELECT Ad_Soyad,Yas,Cinsiyet,Saglik_Durumu FROM HastaTablosu
INNER JOIN SaglikTablosu ON HastaTablosu.SaglıkDurumu = SaglikTablosu.ID
WHERE Yas < 45 AND Cinsiyet = 'K'
Örnek 21: Durumu kritik olan hastalarımızın adlarını, yaşlarını, hastalıklarını ve ziyaret durumlarını listeleyen sorgumuzu yazalım.
USE Hasta_Personel_Veri_Tabani
SELECT Ad_Soyad,Yas,Hastalik,Saglik_Durumu,Ziyaret_Durumu FROM HastaTablosu
INNER JOIN SaglikTablosu ON HastaTablosu.SaglıkDurumu = SaglikTablosu.ID
INNER JOIN ZiyaretTablosu ON HastaTablosu.ZiyaretDurumu = ZiyaretTablosu.ID
WHERE Saglik_Durumu = 'Kritik'
Örnek 22: Her bir personelimizin hastalığını ve yaşını listeleyelim.
USE Hasta_Personel_Veri_Tabani
SELECT AdSoyad,Yas,HastalikAdi FROM PersonelTablosu
INNER JOIN HastalikTablosu ON PersonelTablosu.HastalikTürü = HastalikTablosu.ID
Örnek 23: Her bir kademe için gereken minimum eğitim seviyesini listeyen sorguyu yazalım.
USE Hasta_Personel_Veri_Tabani
SELECT KademeAdi,OgrenimTuru AS 'Gereken Minimum Eğitim Seviyesi' FROM PersonelKademeTablosu
INNER JOIN OgrenimTablosu ON PersonelKademeTablosu.GerekenMinEgitim = OgrenimTablosu.ID
Örnek 24: Hastalarımızın ve personellerimizin ortalama yaşlarının farkını listeleyen sorguyu yazalım.
INPUT:
USE Hasta_Personel_Veri_Tabani
DECLARE @sayi1 DECIMAL(7,2), @sayi2 DECIMAL(7,2), @yasFarki DECIMAL(7,2)
SET @sayi1 = (SELECT AVG(Yas) FROM HastaTablosu)
SET @sayi2 = (SELECT AVG(Yas) FROM PersonelTablosu)
SET @yasFarki = @sayi1 - @sayi2
PRINT @yasFarki
OUTPUT:
15.00
Örnek 25: Cinsiyeti erkek olan hastaların sayısını listeleyen sorguyu yazalım.
INPUT:
USE Hasta_Personel_Veri_Tabani
SELECT COUNT(*) FROM HastaTablosu WHERE Cinsiyet = 'E'
OUTPUT:
11
Bir önceki yazıya ulaşmak için buraya tıklayınız.