SQL Server 2005 - Hızlı El Kitabı
Skip Navigation Links.

SQL(Structured Query Language)

 

·         Bütün Ürünlerin,bütün bilgilerini listeleyelim.

Select * From Production.Product

 

·         Rengi ‘Silver’ olan ürünlerin ProductID,Name,Color,ListPrice bilgilerini listeyelim.

Select ProductID,[Name],Color,ListPrice 

From Production.Product

Where Color='Silver'

 

·         Rengi ‘Silver’ olan ürünlerin ProductID,Name,Color,ListPrice ve Model bilgilerini listeleyelim.

Select P.ProductID,P.[Name],P.Color,P.ListPrice,PM.Name

From Production.Product P,Production.ProductModel PM

Where Color='Silver' AND P.ProductModelID=PM.ProductModelID

 

·         Rengi ‘Silver’ olan,Model adı içinde ‘Mountain’ geçen ürünlerin ProductID,Name,Color,ListPrice ve Model bilgilerini listeleyelim.

Select P.ProductID,P.[Name],P.Color,P.ListPrice,PM.Name

From Production.Product P,Production.ProductModel PM

Where Color='Silver' AND PM.[Name] LIKE '%Mountain%' AND

      P.ProductModelID=PM.ProductModelID

 

·         Ürünlerin ProductID,Name,Color,ListPrice değerlerini fiyatlarının büyükten küçüğe doğru gelecek biçimde listeleyelim.

SELECT ProductID,[Name],Color,ListPrice

FROM Production.Product

ORDER BY ListPrice DESC

 

·         En yüksek fiyata sahip 10 ürünün ProductID,Name,Color,ListPrice bilgilerini listeyelim.

SELECT TOP(10) ProductID,[Name],Color,ListPrice

FROM Production.Product

ORDER BY ListPrice DESC

 

·         Her bir renge ait ürünlerin,ortalama fiyatlarını büyükten küçüğe doğru listeleyelim.(Örneğin Rengi Silver olan bütün ürünlerin ortalama fiyatları,black olan ortalama fiyatları gibi)

 SELECT Color,AVG(ListPrice) as OrtFiyat

FROM Production.Product

GROUP BY Color

ORDER BY OrtFiyat DESC

 

·         Rengi Silver olan ürünleri,  ProductID,Name,Color,ListPrice,Modeli ve kategorisiyle birlikte listeleyelim.

SELECT P.ProductID,P.[Name] 'Ürün',P.Color,P.ListPrice,

 PM.[Name] 'Model',PSC.[Name] 'Kategori'

FROM Production.Product P,Production.ProductModel PM, 

     Production.ProductSubcategory PSC

WHERE P.ProductSubcategoryID=PSC.ProductSubcategoryID AND

      P.ProductModelID=PM.ProductModelID

 

·         ‘Bikes’ kategorisi altındaki tüm ürünleri listeleyiniz.

SELECT P.ProductID,P.[Name],P.Color,P.ListPrice,PC.[Name],PSC.[Name]

FROM   Production.Product P,Production.ProductSubcategory PSC,

         Production.ProductCategory PC

WHERE  P.ProductSubcategoryID=PSC.ProductSubcategoryID AND

       PSC.ProductCategoryID=PC.ProductCategoryID AND

       PC.[Name]='Bikes'

 

·         ‘Bikes’ üst kategorisi altındaki her bir alt kategorinin altında kaçar tane ürün olduğunu listeleyiniz.

SELECT PSC.[Name],COUNT(P.ProductID)

FROM Production.Product P,Production.ProductSubcategory PSC,

         Production.ProductCategory PC

WHERE P.ProductSubcategoryID=PSC.ProductSubcategoryID AND

       PSC.ProductCategoryID=PC.ProductCategoryID AND

       PC.[Name]='Bikes'

GROUP BY PSC.[Name]

 

·         En yüksek ve en düşük ürünleri listeleyiniz.

SELECT TOP(1) [Name],ListPrice FROM Production.Product

WHERE ListPrice=(SELECT MAX(ListPrice) FROM Production.Product)

UNION

SELECT TOP(1) [Name],ListPrice FROM Production.Product

WHERE ListPrice=(SELECT MIN(ListPrice) FROM Production.Product)

 

·         Bütün ürünleri öncelikle kategorilerine göre,daha sonra modeline göre,daha sonrada fiyatına göre sıralı bir biçimde gelecek şekilde ProductID,Name,Color,Model,ListPrice,Kategori bilgilerini listeleyiniz.

SELECT PC.[Name],PSC.[Name],P.ProductID,P.[Name],PM.[Name],P.Color,P.ListPrice

FROM   Production.Product P,Production.ProductSubcategory PSC,

         Production.ProductCategory PC,Production.ProductModel PM

WHERE  P.ProductSubcategoryID=PSC.ProductSubcategoryID AND

       PSC.ProductCategoryID=PC.ProductCategoryID AND

         P.ProductModelID=PM.ProductModelID

ORDER BY PC.[Name],PSC.[Name],P.ListPrice

 

·         Rengi ‘Silver’ olan ürünlerin ProductID,Name,Color,Model,ListPrice bilgilerini listeyeleyiniz.(JOIN kullanılacak).Örneğin bir ürün için model belirtilmemiş ise o kayıtda gelsin.

SELECT P.ProductID,P.[Name],P.Color,P.ListPrice,PM.[Name]

FROM  Production.Product P LEFT OUTER JOIN Production.ProductModel PM

ON P.ProductModelID=PM.ProductModelID

 

·         Rengi ‘Silver’ olan ürünlerin ProductID,Name,Color,Model,ListPrice bilgilerini listeyeleyiniz.(JOIN kullanılacak).Herhangi bir ürün içermeyen modellerin bilgileride gelecek.Herhangi bir modeli olmayan ürünler gelmeyecek.

SELECT P.ProductID,P.[Name],P.Color,P.ListPrice,PM.[Name]

FROM  Production.Product P RIGHT OUTER JOIN Production.ProductModel PM

ON P.ProductModelID=PM.ProductModelID

 

·         Rengi ‘Silver’ olan ürünlerin ProductID,Name,Color,Model,ListPrice bilgilerini listeyeleyiniz.(JOIN kullanılacak).Herhangi bir modele ait olmayan ürünler ve herhangi bir ürün içermeyen modeller listelenmesin.

SELECT P.ProductID,P.[Name],P.Color,P.ListPrice,PM.[Name]

FROM  Production.Product P INNER JOIN Production.ProductModel PM

ON P.ProductModelID=PM.ProductModelID

 

·         10’dan fazla ürünü olan modelleri ve ürün sayılarını listeleyiniz.

SELECT PM.[Name],Count(P.ProductID)

FROM Production.Product P

     INNER JOIN Production.ProductModel PM

     ON P.ProductModelID=PM.ProductModelID

GROUP BY PM.[Name]

HAVING Count(P.ProductID)>10

 

·         Modeli olan bütün ürünleri modelleriyle birlikte listeleyiniz.

SELECT P.ProductID,P.[Name],P.Color,P.ListPrice,PM.[Name]

FROM Production.Product P INNER JOIN Production.ProductModel PM

      ON P.ProductModelID=PM.ProductModelID

SELECT P.ProductID,P.[Name],P.Color,P.ListPrice

FROM Production.Product P

WHERE EXISTS

(

      SELECT * FROM Production.ProductModel PM

      WHERE PM.ProductModelID=P.ProductModelID

)

 

·         Product tablosunun %20’si listeliyniz.(Ürünler rasgele seçilecektir.)

SELECT ProductID,[Name],Color,ListPrice

FROM Production.Product

TABLESAMPLE(20 PERCENT)

 

·         Günün tarihini YYYY..MM..DD biçiminde gösteriniz.

SELECT CONVERT(CHAR(4),YEAR(GETDATE()))+'..'+

         CONVERT(CHAR(2),MONTH(GETDATE())) +'..'+

         CONVERT(CHAR(2),DAY(GETDATE()))

 

·         En Küçük ile En yüksek fiyatlı ürün arasındaki farkı bulan SQL cümleceiğini yazınız.

SELECT MAX(ListPrice) as 'Minimum',MIN(ListPrice) as 'Maximum',

       (MAX(ListPrice)-MIN(ListPrice)) as 'Fark'

FROM Production.Product

WHERE ListPrice>0

 

·         Üst ve alt kategorileri,önce Üst kategoriye göre sonrada alt kategoriye göre sıralayarak listeleyiniz.

SELECT PC.[Name],PSC.[Name]

FROM Production.ProductCategory PC,Production.ProductSubcategory PSC

WHERE PC.ProductCategoryID=PSC.ProductCategoryID

ORDER BY PC.[Name],PSC.[Name]

 

·         10’dan fazla alt kategorisi olan kategorileri ad sıralamasına göre listeleyiniz.

SELECT PC.[Name],Count(PSC.[Name])

FROM Production.ProductCategory PC,Production.ProductSubcategory PSC

WHERE PC.ProductCategoryID=PSC.ProductCategoryID

GROUP BY PC.[Name]

HAVING Count(PSC.[Name])>10

ORDER BY PC.[Name]

 

·         En uzun isme sahip ürünü bulunuz

SELECT TOP(1) P.[Name],LEN(P.[Name])

FROM Production.Product P

ORDER BY LEN(P.[Name]) DESC

 

·         HL Road Frame ve Sport-100 modellerine ait olan ürünlerin toplam fiyatlarını beliritlen model isimleri kolon olacak biçimde gösteriniz.

SELECT [HL Road Frame],[Sport-100]

FROM

(

      SELECT PM.[Name] as ModelName,P.ListPrice price

      FROM Production.Product P,Production.ProductModel PM

      WHERE P.ProductModelID=PM.ProductModelID

) AS H

PIVOT

(

      SUM(price)

      FOR ModelName IN ([HL Road Frame],[Sport-100])

) AS Pvt

 

Sonuç :

HL Road Frame

Sport-100

15746,50

104,97

 

·         EmployeePayHistory tablosunda her bir çalışanın yıllara göre ödemelerinde değişim oranları tutulmaktadır.Bu tabloyu kullanarak 1996-2003 yılları arasında bütün çalışanlarda yıl yıl gerçekleşen en yüksek ödeme değişim oranını listeleyiniz.

 

 

SELECT *

FROM

(

      SELECT EmployeeID,YEAR(RateChangeDate) AS ChangeYear,Rate

      FROM HumanResources.EmployeePayHistory

) AS EmpRates

PIVOT

(

      MAX(Rate)

      FOR ChangeYear IN

      (

            [1996],[1997],[1998],[1999],

            [2000],[2001],[2002],[2003]

      )

) AS Pvt