15 Haziran 2015 Pazartesi

SQL T-SQL Sorguları3

Sorgularımıza kaldığımız yeden devam ediyoruz 
Aşağıda select ifadesini kullanarak Northwınd veri tabanında INNER JOIN, LEFT JOIN , RIGHT JOINFULL JOINHAVING,GROUP BY, ORDER BY, AS vs. fonksiyonları kullanarak çalışmalar yaptık.

Yararlı olması dileğiyle...
--Federal Shipping(SHİPPER) ile tasinmis ve Nancy(EMPLOYEE)'nin almış oldugu siparişler(ORDER) ve adet ile tutarları

SELECT e.FirstName,
s.CompanyName,
OD.Quantity,
OD.UnitPrice,
(OD.UnitPrice*OD.Quantity) AS [TOPLAM TUTAR]
FROM Orders O
INNER JOIN Shippers S ON S.ShipperID = o.ShipVia
INNER JOIN Employees E ON E.EmployeeID = O.EmployeeID
INNER JOIN [Order Details] OD ON OD.OrderID = O.OrderID
WHERE  S.CompanyName LIKE 'Federal Shipping'
AND E.FirstName = 'Nancy'

--  Ürünleri ve bağlı bulundukları kategorileri listeleyiniz. Ancak ürünü olmayan kategorilerde olmalı.

SELECT
P.ProductName,
C.CategoryName
FROM Categories C
LEFT JOIN Products P
ON P.CategoryID = C.CategoryID

--Ürünleri ve bağlı bulundukları kategorileri listeleyiniz. Ancak kategorisi olmayan ürünleri de gösterelim.
SELECT P.ProductName, C.CategoryName
FROM Categories AS C
RIGHT JOIN Products AS P
 ON P.CategoryID = C.CategoryID



-- Ürünleri ve bağlı bulundukları kategorileri listeleyiniz. Ancak kategorisi olmayan ürünler ve ürünleri olmayan kategoriler de listelensin.

SELECT P.ProductName, C.CategoryName
FROM Categories C
FULL JOIN Products P ON C.CategoryID=P.CategoryID
ORDER BY P.ProductName DESC



-- En çok ürün aldığımız 3 tedarikçiyi, almış olduğumuz ürün miktarlarına göre raporlayalım...
SELECT TOP(3) S.CompanyName,SUM(P.UnitsInStock+P.UnitsOnOrder) AS ADET
FROM Products AS P
INNER JOIN Suppliers AS S
ON P.SupplierID = S.SupplierID
GROUP BY S.CompanyName
ORDER BY ADET DESC

-- Her üründen toplam ne kadarlık satış yapılmıştır ve o ürünler hangi kategoriye aittir?

select P.ProductName,sum (O2.Quantity*O2.UnitPrice) AS TOPLAM_ÜRÜN_FİYATI
from Products as P
inner join Categories as C on C.CategoryID=P.CategoryID
inner join [Order Details] as O2 on O2.ProductID=P.ProductID
group by P.ProductName
ORDER BY P.ProductName

select P.ProductName,c.CategoryName,sum (O2.Quantity*O2.UnitPrice) AS TOPLAM_URUN_FİYATI
from Products as P
inner join Categories as C on C.CategoryID=P.CategoryID
inner join [Order Details] as O2 on O2.ProductID=P.ProductID
group by P.ProductName,c.CategoryName
ORDER BY P.ProductName


select P.ProductName,c.CategoryName
,sum (O2.Quantity) as Quantity
,sum (O2.Quantity*O2.UnitPrice) AS TOTAL
from Products as P
inner join Categories as C on C.CategoryID=P.CategoryID
inner join [Order Details] as O2 on O2.ProductID=P.ProductID
group by P.ProductName,c.CategoryName
ORDER BY P.ProductName

-- CompanyName'leri arasında A geçen müşterilerin vermiş olduğu siparişlerin;
-- Nancy, Andrew ya da Janet tarafından alınmış olanlarının;
-- Speedy Express ile taşınmamış siparişler ve ne kadarlık kargo ödemesi yapılmıştır?

select e.FirstName, s.CompanyName, c.CompanyName,
o.Freight
from Orders as o
inner join Customers as c on c.CustomerID=o.CustomerID
inner join Employees as e on e.EmployeeID=o.EmployeeID
inner join Shippers as s on s.ShipperID=o.ShipVia

where s.CompanyName!='Speedy Express'
and ( e.FirstName='Nancy'
or e.FirstName='Andrew'
or e.FirstName='Janet' )
and c.CompanyName like'%a%'

-- CompanyName'leri arasında A geçen müşterilerin vermiş olduğu siparişlerin;
-- Nancy, Andrew ya da Janet tarafından alınmış olanlarının;
-- Speedy Express ile taşınmamış siparişlerin Müşteri Company Name'e göre TOPLAM ne kadarlık kargo ödemesi yapılmıştır?
SELECT
SUM(O.Freight) AS Kargo,
C.CompanyName
FROM Orders AS O
INNER JOIN Customers As C On C.CustomerID = O.CustomerID
INNER JOIN Shippers AS S On S.ShipperID = O.ShipVia
INNER JOIN Employees AS E ON E.EmployeeID = O.EmployeeID
WHERE C.CompanyName LIKE '%A%' AND
--E.FirstName IN ( 'Nancy','Andrew','Janet') AND
E.FirstName IN ( Select TOP(3) FirstName From Employees order by FirstName desc ) AND
S.CompanyName!='Speedy Express'
GROUP BY C.CompanyName
HAVING
--SUM(O.Freight)>100
--SUM(O.Freight)>100 and SUM(O.Freight)<200 p=""> SUM(O.Freight) BETWEEN 100 AND 200

Hiç yorum yok:

Yorum Gönder