Northwind SQL Sorgu Örnekleri – 2

12 Eylül 2020
Posted by Çağatay Yıldız
206 Views

Bir önceki yazımızda Northwind’e giriş için basit sorgular paylaşmıştık. ( http://cagatayyildiz.com/northwind-sorgu-ornekleri-1/) Bu yazımızda ise tablolarımızı birleştirip, sorgularımızı biraz daha genişlettik.

--1998 yılı mart ayındaki siparişlerimin adresi, siparişi alan çalışanın adı, çalışanın soyadı
select 
o.ShipAddress,e.FirstName,e.LastName 
from Orders as o
inner join Employees e
on e.EmployeeID = o.EmployeeID
where YEAR(o.OrderDate) = 1998 and Month(o.OrderDate) = 3


--1997 yılı şubat ayında kaç siparişim var?
select count(*) Adet from Orders as o where YEAR(o.OrderDate) = 1997 and Month(o.OrderDate) = 2

--London şehrinden 1998 yılında kaç siparişim var?
select count(*) Adet from Orders o where YEAR(o.OrderDate) = 1998 and  o.ShipCity = 'London'

--1997 yılında sipariş veren müşterilerimin contactname ve telefon numarası
select c.ContactName, c.Phone from Orders o inner join Customers c
on o.CustomerID = c.CustomerID
where YEAR(o.OrderDate) = 1997

--Taşıma ücreti 40 üzeri olan siparişlerim ( Freight)
select * from Orders where Freight > 40 order by Freight

--Taşıma ücreti 40 ve üzeri olan siparişlerimin şehri, müşterisinin adı
select o.ShipCity,c.ContactName from Orders o inner join Customers c
on o.CustomerID = c.CustomerID
where Freight >= 40

--1997 yılında verilen siparişlerin tarihi, şehri, çalışan adı -soyadı ( ad soyad birleşik olacak ve büyük harf)
select 
o.OrderDate,
o.ShipCity,
UPPER(emp.FirstName + ' ' + emp.LastName)
from Orders as o inner join Employees as emp
on o.EmployeeID = emp.EmployeeID
where YEAR(o.OrderDate) = 1997


--1997 yılında sipariş veren müşterilerin contactname i,  ve telefon numaraları ( telefon formatı 2223322 gibi olmalı )

select 
c.ContactName,
TRIM(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(c.Phone,'(',''),')',''),' ',''),'.',''),'-',''))
from Orders as o inner join Customers as c
on o.CustomerID = c.CustomerID
where YEAR(o.OrderDate) = 1997

--Sipariş tarihi, müşteri contact name, çalışan ad, çalışan soyad (3 tablo birleştirilecek)
select 
o.OrderDate,
c.ContactName,
emp.FirstName,
emp.LastName
from Orders as o
inner join Customers as c
on o.CustomerID = c.CustomerID
inner join Employees as emp
on o.EmployeeID = emp.EmployeeID

--Geciken siparişlerim?
select * from Orders as o where o.RequiredDate < o.ShippedDate

--Geciken siparişlerimin tarihi, müşterisinin adı
select 
o.OrderDate,
c.ContactName
from Orders as o
inner join Customers as c
on o.CustomerID = c.CustomerID
where o.RequiredDate < o.ShippedDate

--10248 nolu siparişte satılan ürünlerin adı, kategorisinin adı, adedi ( category,product,order details )
select 
p.ProductName,
c.CategoryName,
od.Quantity
from [Order Details] od inner join Products p
on od.ProductID = p.ProductID
inner join Categories c
on p.CategoryID = c.CategoryID
where od.OrderID = 10248

--10248 nolu siparişin ürünlerinin adı , tedarikçi adı (Orders, products, suppliers )
select 
p.ProductName,
s.CompanyName
from [Order Details] od
inner join Products p
on od.ProductID = p.ProductID
inner join Suppliers s
on p.SupplierID = s.SupplierID
where od.OrderID = 10248


--3 numaralı ID ye sahip çalışanın 1997 yılında sattığı ürünlerin adı ve adeti 
select
p.ProductName,
od.Quantity
from [Order Details] od
inner join Orders o
on od.OrderID = o.OrderID
inner join Products p
on od.ProductID = p.ProductID
where o.EmployeeID = 3 and YEAR(o.OrderDate) = 1997

--1997 yılında bir defasinda en çok satış yapan çalışanımın ID,Ad soyad 
select
top 1(od.UnitPrice * od.Quantity) ToplamSatis,
emp.EmployeeID,
emp.FirstName,
emp.LastName
from [Order Details] od
inner join Orders o
on od.OrderID = o.OrderID
inner join Employees emp
on o.EmployeeID = emp.EmployeeID
where YEAR(o.OrderDate) = 1997
order by ToplamSatis desc


--1997 yılında en çok satış yapan çalışanımın ID,Ad soyad ****
select
top 1 SUM(od.UnitPrice * od.Quantity) ToplamSatis,
emp.EmployeeID,
emp.FirstName,
emp.LastName
from [Order Details] od
inner join Orders o
on od.OrderID = o.OrderID
inner join Employees emp
on o.EmployeeID = emp.EmployeeID
where YEAR(o.OrderDate) = 1997
group by emp.EmployeeID,FirstName,LastName
order by ToplamSatis desc

--En pahalı ürünümün adı,fiyatı  ve kategorisin adı nedir? 
select 
top 1 p.ProductName,
c.CategoryName,
p.UnitPrice 
from Products p inner join Categories c
on p.CategoryID = c.CategoryID
order by p.UnitPrice desc

--Siparişi alan personelin adı,soyadı, sipariş tarihi, sipariş ID. Sıralama sipariş tarihine göre 
select 
o.OrderID,
emp.FirstName + ' ' + emp.LastName,
o.OrderDate 
from Orders o inner join  Employees emp
on o.EmployeeID = emp.EmployeeID
order by o.OrderDate

--SON 5 siparişimin ortalama fiyatı ve orderid nedir? (sepet toplamı ortalaması) 
select top 5
o.OrderID,
AVG(od.UnitPrice * od.Quantity)
from Orders o inner join [Order Details] od
on o.OrderID = od.OrderID
group by o.OrderID
order by o.OrderID desc

--Ocak ayında satılan ürünlerimin adı ve kategorisinin adı ve toplam satış miktarı nedir?
 select 
 p.ProductName,
 c.CategoryName,
 od.Quantity
 from Orders o 
 inner join [Order Details] od
 on o.OrderID = od.OrderID
 inner join Products p
 on p.ProductID = od.ProductID
 inner join Categories c
 on c.CategoryID = p.CategoryID
 where Month(o.OrderDate) = 1


 --Ortalama satış miktarımın üzerindeki satışlarım nelerdir? (order details tablosu) 

 declare @ortalama float
 
 set @ortalama = (select AVG(od.UnitPrice * od.Quantity) from [Order Details] od)

 select (od.UnitPrice * od.Quantity) Satis from [Order Details] od 
 where (od.UnitPrice * od.Quantity)  > @ortalama
 order by Satis


 --En çok satılan ürünümün(adet bazında) adı, kategorisinin adı ve tedarikçisinin adı (4 tablo birleşimi) 
 select top 1 
 p.ProductName,
 c.CategoryName,
 s.CompanyName
 from [Order Details]  od
 inner join Products p
 on od.ProductID = p.ProductID
 inner join Categories c
 on c.CategoryID = p.CategoryID
 inner join Suppliers s
 on s.SupplierID = p.SupplierID
 order by Quantity desc


 -- Kaç ülkeden müşterim var
 select distinct c.Country from Customers c


 --Hangi ülkeden kaç müşterimiz var
 select
 c.Country,
 COUNT(*) Adet
 from Customers c
 group by c.Country

 --3 numaralı ID ye sahip çalışan (employee) son Ocak ayından BUGÜNE toplamda ne kadarlık ürün sattı? 

 select 
 SUM(od.UnitPrice * od.Quantity)
 from Orders o
 inner join [Order Details] od
 on o.OrderID = od.OrderID
 where o.EmployeeID = 3 and YEAR(o.OrderDate) >= 1998 and MONTH(o.OrderDate) > 1

 --10 numaralı ID ye sahip ürünümden son 3 ayda ne kadarlık ciro sağladım?</pre>
<pre class="a-b-r-La">--10248 nolu siparişte satılan ürünlerin adı, kategorisinin adı, adedi ( category,product,order details )
select 
p.ProductName,
c.CategoryName,
od.Quantity
from [Order Details] od inner join Products p
on od.ProductID = p.ProductID
inner join Categories c
on p.CategoryID = c.CategoryID
where od.OrderID = 10248

--10248 nolu siparişin ürünlerinin adı , tedarikçi adı (Orders, products, suppliers )
select 
p.ProductName,
s.CompanyName
from [Order Details] od
inner join Products p
on od.ProductID = p.ProductID
inner join Suppliers s
on p.SupplierID = s.SupplierID
where od.OrderID = 10248


--3 numaralı ID ye sahip çalışanın 1997 yılında sattığı ürünlerin adı ve adeti 
select
p.ProductName,
od.Quantity
from [Order Details] od
inner join Orders o
on od.OrderID = o.OrderID
inner join Products p
on od.ProductID = p.ProductID
where o.EmployeeID = 3 and YEAR(o.OrderDate) = 1997

--1997 yılında bir defasinda en çok satış yapan çalışanımın ID,Ad soyad 
select
top 1(od.UnitPrice * od.Quantity) ToplamSatis,
emp.EmployeeID,
emp.FirstName,
emp.LastName
from [Order Details] od
inner join Orders o
on od.OrderID = o.OrderID
inner join Employees emp
on o.EmployeeID = emp.EmployeeID
where YEAR(o.OrderDate) = 1997
order by ToplamSatis desc


--1997 yılında en çok satış yapan çalışanımın ID,Ad soyad ****
select
top 1 SUM(od.UnitPrice * od.Quantity) ToplamSatis,
emp.EmployeeID,
emp.FirstName,
emp.LastName
from [Order Details] od
inner join Orders o
on od.OrderID = o.OrderID
inner join Employees emp
on o.EmployeeID = emp.EmployeeID
where YEAR(o.OrderDate) = 1997
group by emp.EmployeeID,FirstName,LastName
order by ToplamSatis desc

--En pahalı ürünümün adı,fiyatı  ve kategorisin adı nedir? 
select 
top 1 p.ProductName,
c.CategoryName,
p.UnitPrice 
from Products p inner join Categories c
on p.CategoryID = c.CategoryID
order by p.UnitPrice desc

--Siparişi alan personelin adı,soyadı, sipariş tarihi, sipariş ID. Sıralama sipariş tarihine göre 
select 
o.OrderID,
emp.FirstName + ' ' + emp.LastName,
o.OrderDate 
from Orders o inner join  Employees emp
on o.EmployeeID = emp.EmployeeID
order by o.OrderDate

--SON 5 siparişimin ortalama fiyatı ve orderid nedir? (sepet toplamı ortalaması) 
select top 5
o.OrderID,
AVG(od.UnitPrice * od.Quantity)
from Orders o inner join [Order Details] od
on o.OrderID = od.OrderID
group by o.OrderID
order by o.OrderID desc

--Ocak ayında satılan ürünlerimin adı ve kategorisinin adı ve toplam satış miktarı nedir?
 select 
 p.ProductName,
 c.CategoryName,
 od.Quantity
 from Orders o 
 inner join [Order Details] od
 on o.OrderID = od.OrderID
 inner join Products p
 on p.ProductID = od.ProductID
 inner join Categories c
 on c.CategoryID = p.CategoryID
 where Month(o.OrderDate) = 1


 --Ortalama satış miktarımın üzerindeki satışlarım nelerdir? (order details tablosu) 

 declare @ortalama float
 
 set @ortalama = (select AVG(od.UnitPrice * od.Quantity) from [Order Details] od)

 select (od.UnitPrice * od.Quantity) Satis from [Order Details] od 
 where (od.UnitPrice * od.Quantity)  > @ortalama
 order by Satis


 --En çok satılan ürünümün(adet bazında) adı, kategorisinin adı ve tedarikçisinin adı (4 tablo birleşimi) 
 select top 1 
 p.ProductName,
 c.CategoryName,
 s.CompanyName
 from [Order Details]  od
 inner join Products p
 on od.ProductID = p.ProductID
 inner join Categories c
 on c.CategoryID = p.CategoryID
 inner join Suppliers s
 on s.SupplierID = p.SupplierID
 order by Quantity desc


 -- Kaç ülkeden müşterim var
 select distinct c.Country from Customers c


 --Hangi ülkeden kaç müşterimiz var
 select
 c.Country,
 COUNT(*) Adet
 from Customers c
 group by c.Country

 --3 numaralı ID ye sahip çalışan (employee) son Ocak ayından BUGÜNE toplamda ne kadarlık ürün sattı? 

 select 
 SUM(od.UnitPrice * od.Quantity)
 from Orders o
 inner join [Order Details] od
 on o.OrderID = od.OrderID
 where o.EmployeeID = 3 and YEAR(o.OrderDate) >= 1998 and MONTH(o.OrderDate) > 1

 --10 numaralı ID ye sahip ürünümden son 3 ayda ne kadarlık ciro sağladım?