Sayfalar

2018/01/25

Sql inner join

--JOİN...: İlişkili birden fazla tabloyu 
--birleştirmek için kullanılan bir yöntemdir.  
--3 Çeşit join vardır.İnner join, outer join, cross join

 --İnner join...: Tablodaki NULL olmayan kayıtları listeler
 select UrunAdi, fiyat,Stok,KategoriAdi,Tanimi 
  from Urunler inner join kategoriler on 
  Urunler.KategoriID=Kategoriler.KategoriID 

  --Ürünleri ve sadece şirket isimleriyle ile birlikte listeleyiniz 
  select Urunler.*,SirketAdi from Urunler inner join Tedarikciler  on
  Tedarikciler.TedarikciID=Urunler.TedarikciID

  --Yapılan satışları müşteri adı sayadı ve personel adı,
  -- soyadı ile birlikte listeleyiniz. 
  select Satislar.*,(MusteriAdi+MusteriUnvani) 'musteri ad soyad ',
  (Adi+SoyAdi)'personel ad soyad' from Satislar inner join
  Musteriler on Satislar.MusteriID=Musteriler.MusteriID
  inner join Personeller on Personeller.PersonelID=Satislar.PersonelID

--Hangi personel hangi üründen taplamda kaç dolarlık satış yapmıştır
--(personel ürünler satisdetay satis)
--ilk iş bunları bir birine joinleyelim

select Personeller.Adi+ ' '+Personeller.SoyAdi as personel,
Urunler.UrunAdi,SUM(SatisDetay.Adet*SatisDetay.Fiyat
*(1-SatisDetay.Indirim)) from Satislar
inner join Personeller  on
Satislar.PersonelID=Personeller.PersonelID 
inner join SatisDetay on
Satislar.SatisID=SatisDetay.SatisID
inner join Urunler on
Urunler.UrunID=SatisDetay.UrunID
group by Urunler.UrunAdi,Personeller.Adi+' '+Personeller.SoyAdi 


--hangi personel hangi kategoriden toplam kaç adet ürün satışı yapmıştır.
--(Personel,satis,satisdetay,kategori)

select (p.Adi+p.SoyAdi) as 'Personel adı ve soyadı' ,k.KategoriAdi,
sum(sd.Adet) as 'sattıgı adet'  from Satislar s 
inner join Personeller p on
p.PersonelID=s.PersonelID
inner join SatisDetay sd on
sd.SatisID=s.SatisID
inner join Urunler u on
u.UrunID=sd.UrunID
inner join Kategoriler k on
k.KategoriID=u.KategoriID
group by p.Adi+p.SoyAdi,k.KategoriAdi

--Nakliyeci şirket adı 'speedy Express' olan nakliyeci,
-- satış fiyatı 15 dolardan yüksek kaç adet ürün taşımıştır.
--(nakliyeciler,satislar,satisdetay,)
select n.SirketAdi , SUM(sd.Adet) from Satislar s
inner join Nakliyeciler n on
n.NakliyeciID=s.ShipVia
inner join SatisDetay sd on
sd.SatisID=s.SatisID
where n.SirketAdi='Speedy Express' and  sd.Fiyat >15 
group by n.SirketAdi 

2018/01/22

SQL ALT SORGULAR


              --ALT SORGULAR 1 (İç içe sorgular)
--1.Kullanım şekli:Select ile from arasınabir sorgu yazılır.
--Bu sorgu geriye sadece bir sütun döndürür.
Select *,(select KategoriAdi from Kategoriler where KategoriID=Urunler.KategoriID) 
'kategori adı' from Urunler
--Urunler tablosunu tedarikçi adı ile birlikte listeleyiniz.
select *,(select SirketAdi from Tedarikciler where TedarikciID=Urunler.TedarikciID)
'ŞİRKETADLARI'  from Urunler
--Ürünler tablosunu tedarikçi adı ve kategori adı, ürün adı, fiyat ve stok
-- bilgileri ile birlikte listeleyiniz. 
select UrunAdi,Fiyat,Stok,(select KategoriAdi from Kategoriler
 where KategoriID=Urunler.KategoriID) 
' Kategori Adı',(Select SirketAdi from Tedarikciler where 
TedarikciID=Urunler.TedarikciID)'Tedarikçi Adı' from Urunler
--Satışlar tablosunu müşteri adı unvanı(aynı hücrede), personel adı soyad(aynı hücre)
-- ile birlikte listeleyiniz.
select *,(select MusteriAdi+' '+MusteriUnvani from Musteriler 
where MusteriID=Satislar.MusteriID)
'Müşteri Adı Soyadı', (select Adi+' '+SoyAdi from Personeller 
where PersonelID=Satislar.PersonelID)
'Personel Adı Soyadı' from Satislar

--Ürünler ile birlikte ürünün toplam satış adedi bilgisinide gösteren sorguyu yazınız.
select *,(select SUM(Adet) from SatisDetay where UrunID=Urunler.UrunID) 'ADET' 
 from Urunler
--Yapılan satışları maximum satış fiyatı bilgisi ile listeleyiniz
select *,(select MAX(Fiyat) from SatisDetay where SatisID=Satislar.SatisID)'MAXFİYAT'
 from Satislar
--ürünleri ürüne uygulanan maximum indirim yüzdesi bilgisi ile birlikte listeleyen 
--sorguyu yazınız.
select *,(select MAX(Indirim) from SatisDetay where UrunID=Urunler.UrunID)
'max indirim' from Urunler
--Yapılan satışları toplam satış tutarları ile birlikte listeleyen sorguyu yazınız

2018/01/19

SQL GROUP BY KULLANIMI

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

--notlar count=saymak sum=toplam average=ortalama
     
     
     --GROUP BY KULLANIMI
--Group by : Tablo içindeki verileri gruplamayı saglar.

--Hangi kategoriden kaç tane ürün vardır. 
--not: Soruda hangi kelimesi geçiyorsa orada group by vardır.
--not: Hangi kolunu group by ladıysak o kolonu yazdırmamız lazım
select kategoriId , count(*) from Urunler group by KategoriID

--stokta hangi kategoriden kaç dolarlık ürün vardır.
select KategoriID,SUM(Fiyat*Stok) 'toplam tutar' from Urunler group by KategoriID
--hangi kategoriden stokta kaç adet ürün vardır.
select KategoriID ,SUM(STOK) 'TOPLAM STOK ADEDİ' from Urunler group by KategoriID
--Hangi tedarikçiden kaç adet ürün tedarik edilmiştir.
select TedarikciID ,count(TedarikciID) FROM Urunler group by TedarikciID
--hangi tedarikçiden stokta toplamda kaç dolarlık ürün vardır.
select TedarikciID , sum(Stok*fiyat) from Urunler group by TedarikciID
--hangi personel hangi müşteriye kaç adet satış yapmıştır (satıslar tablosu)
select PersonelID,MusteriID,count(*) from Satislar group by PersonelID,MusteriID
--Hangi müşteri hangi nakliyeciden kaç adet siparişte bulunmuştur
--(nakliyeci=shipvia kolonudur)
select MusteriID,ShipVia,count(*) from Satislar group by MusteriID,ShipVia
--Hangi üründen toplamda kaç dolarlıksatış yapılmıştır ve büyükten küçüge
--sıralayınız(satısdetay)
select UrunID , sum(Fiyat*adet*(1-Indirim)) 'satış miktarı' 
from SatisDetay group by UrunID order by [satış miktarı] desc

SQL AGGREGATE FONKSİYONLARI

--AGGREGATE FUNCTION
--aggregate=toplam,bütün anlamına gelir. 5 tane alt başlıgımız vardir.
--aggregate functionlar select ile from arasına yazılırlar
--1-) Count()-->satır adedini veren fonksiyondur. count=saymak 

--Kaç adet kategori vardır.
select COUNT (*) from Kategoriler
--kategoriler tablosunda kaç adet " Tanimi " satırı vardır.
select count(Tanimi) from kategoriler -- 11 degilde 9 geldi çünkü Tanimi'de 2 hücre 
null oldugu için


--2-)Sum toplam işlemi yapmamızı saglayan fonksiyondur. sum=toplam
--Stokta kaç adet ürün bulunmaktadır.
select SUM(Stok) from Urunler
--stokta bulunan ürünlerin toplam fiyatını bulunuz
select SUM (Fiyat) from Urunler--burada sadece fiyatları toplar getirir.
--Cevap bu degildir.
select sum(Fiyat*Stok) from Urunler -- dogrusu budur


--3-)AVG ortalama almaya yarayan fonksiyondur. average=ortalama
--stogumuz da toplam kaç adet ürün vardır  
select AVG(stok) from Urunler
--stogumuzda ortalama fiyat olarak ne kadarlık ürün vardır
select AVG(fiyat*stok) from Urunler

--4-)MAX fonksiyonu--> belirtilen kolon içinden degeri max olandegeri getirir.
--stogu en yüksek olan ürünü getiriniz.
select max(stok) from Urunler

--5-)MIN fonksiyonu --> belirtilen kolon içinde degeri en az olan degeri getirir.
--Fiyatı en az olan ürünün fiyatını gösteriniz 
select MIN(Fiyat) 'EN DÜŞÜK FİYAT' from Urunler -- BURADA KOLON ADINI DA TIRNAK
İÇİNDE BELİRTMİŞ OLDUK
--Toplam fiyat olarak ne kadarlık ürün satışı yapılmıştır
select sum(Fiyat*Adet*(1-Indirim)) from SatisDetay