15 Haziran 2015 Pazartesi

SQL T-SQL Sorguları4

Sorgularımıza kaldığımız yeden devam ediyoruz biraz daha karışık diyebilceğimiz bir iki sorgu örnegini de ekliyoruz. Aşağıda select ifadesini kullanarak Northwınd veri tabanında CROSS JOIN,CAST, INNER JOIN, LEFT JOIN , RIGHT JOINFULL JOINHAVING,GROUP BY, ORDER BY, AS vs. fonksiyonları kullanarak çalışmalar yaptık.
-- ilk 3 ürünü ile ilk 3 kategori ile her ürünün her kategori ile eşleşmesini sağlayalım.
--1. Cozum
SELECT  *
FROM   (
   SELECT TOP(3) ProductName
   FROM Products
 ) as Table1
cross join(
  SELECT TOP(3) CategoryName
  FROM Categories
  )AS Table2
order by   Table2.CategoryName
--2. Cozum
SELECT
ProductName,
C.CategoryName
FROM Products AS P
CROSS JOIN Categories AS C
WHERE ProductID<=3 AND C.CategoryID<=3

--24000 TL'den fazla satılan ürün isimleri nelerdir?
SELECT P.ProductName,
CAST(CAST(SUM(OD.Quantity*OD.UnitPrice*(1-OD.Discount)) AS DECIMAL(8,2)) AS NVARCHAR(15)) + ' TL' AS Total
FROM [Order Details] AS OD
INNER JOIN Products AS P ON P.ProductID = OD.ProductID
GROUP BY P.ProductName
HAVING SUM(OD.Quantity*OD.UnitPrice*(1-OD.Discount)) > 24000
ORDER BY Total DESC

-- Siparişlerim hangi müşteriye, ne zaman, hangi çalışanım tarafından gerçekleştirilmiştir.
-- CompanyName alfabetik, siparişler en yeniden en eskiye doğru ve aynı sipariş günü olanlarda çalışan adına göre alfabetik olsun.
SELECT Cus.CompanyName, E.FirstName, O.OrderDate
FROM Orders AS O
INNER JOIN Employees AS E ON E.EmployeeID = O.EmployeeID
INNER JOIN Customers AS Cus ON Cus.CustomerID = O.CustomerID
ORDER BY Cus.CompanyName, OrderDate DESC, E.FirstName ASC

-- Hangi ülkeye ne kadarlık satış yapmışım?
SELECT O.ShipCountry, SUM(OrD.UnitPrice*OrD.Quantity) AS TotalRevenue
FROM [Order Details] AS OrD
INNER JOIN Orders AS O ON O.OrderID=OrD.OrderID
GROUP BY ShipCountry
ORDER BY TotalRevenue DESC

-- Hangi kategoriden ne kadarlık satış yapmışım?
SELECT C.CategoryID, C.CategoryName, SUM(OrD.UnitPrice*OrD.Quantity)
FROM [Order Details] AS OrD
INNER JOIN Products AS P ON P.ProductID=OrD.ProductID
INNER JOIN Categories AS C ON C.CategoryID=P.CategoryID
GROUP BY C.CategoryID,C.CategoryName

-- EmployeeId=1 olan çalışanın satmış olduğu ürünleri listeleyelim.
SELECT P.ProductName, COUNT(P.ProductID) , SUM(OD.Quantity * OD.UnitPrice)
FROM Products AS P
INNER JOIN [Order Details] AS OD ON P.ProductID = OD.ProductID
INNER JOIN Orders AS O ON OD.OrderID = O.OrderID
WHERE O.EmployeeID = 1
GROUP BY P.ProductName

-- ÖDÜLLÜ SORUMUZ
-- Hangi siparişi hangi çalışan hangi müşteriden almış.
-- Bu sipariş hangi kargo şirketi ile gönderilmiştir? Bu siparişte hangi kategori den
-- Hangi tedarikçinin sağladığı hangi üründen kaç adet satın alınmıştır?

SELECT 
O.OrderID,
E.FirstName,
C.CompanyName,
S.CompanyName,
CA.CategoryName,
SU.CompanyName,
P.ProductName,
OD.Quantity
FROM
Orders AS O
INNER JOIN Employees AS E ON O.EmployeeID=E.EmployeeID
INNER JOIN Customers AS C ON C.CustomerID=o.CustomerID
INNER JOIN Shippers AS S ON O.ShipVia=S.ShipperID
INNER JOIN [Order Details] AS OD ON OD.OrderID=O.OrderID
INNER JOIN Products AS P ON P.ProductID=OD.ProductID
INNER JOIN Categories AS CA ON CA.CategoryID=P.CategoryID
INNER JOIN Suppliers AS SU ON SU.SupplierID=O.ShipVia

Hiç yorum yok:

Yorum Gönder