SQL Server’da Northwind Veritabanı Sorgu Örnekleri
Herkese merhaba,
Bu yazıda SQL Server’da Northwind veri tabanı sorgu örneklerini sizlerle paylaşacağım.
Kodları kendiniz deneyimleyin, anlamadığınız nokta olursa Youtube Kanalımdan videoları izleyebilirsiniz. Abone olursanız sevinirim.
SQL Server’da kendinizi ilerletmek istiyorsanız bol bol pratik yapmalısınız.
Bu noktada aşağıdaki soruları çözmeniz oldukça önemli.
1 -) Çalışanların sayısını listeleyelim.
SELECT COUNT(*) [Calisan Sayisi]
FROM dbo.Employees;
2 -) Çalışanların ad ve soyadlarını listeleyelim.
SELECT FirstName,
LastName,
FirstName + ' ' + LastName AS [Ad Soyad]
FROM dbo.Employees;
3 -) Patronu listeleyelim, Çalışan kadınları listeleyelim.
SELECT FirstName,
LastName
FROM dbo.Employees
WHERE TitleOfCourtesy = 'Dr.';
SELECT *
FROM dbo.Employees
WHERE TitleOfCourtesy IN ( 'Ms.', 'Mrs.' );
SELECT *
FROM dbo.Employees
WHERE TitleOfCourtesy = 'Ms.'
OR TitleOfCourtesy = 'Mrs.';
4 -) Çalışan erkekleri listeleyelim.
SELECT *
FROM dbo.Employees
WHERE TitleOfCourtesy = 'Mr.';
SELECT FirstName,
LastName
FROM dbo.Employees
WHERE TitleOfCourtesy = 'Mr.';
5 -) Çalışan erkek ve kadın sayılarını bulalım.
SELECT COUNT(*) AS CalisanErkek
FROM dbo.Employees
WHERE TitleOfCourtesy = 'Mr.';
SELECT COUNT(*) AS CalisanKadin
FROM dbo.Employees
WHERE TitleOfCourtesy IN ( 'Ms.', 'Mrs.' );
6 -) Çalışanlar kaç farklı şehirde çalışıyor listeleyelim.
SELECT DISTINCT
City
FROM dbo.Employees;
7 -) Doğum tarihi 1960-05-29 dan büyük olanları listeleyelim.
SELECT *
FROM dbo.Employees
WHERE BirthDate > '1960-05-29';
8 -) Adresinin içinde House geçen kişileri listeleyelim.
SELECT FirstName,
LastName
FROM dbo.Employees
WHERE [Address] LIKE '%House%';
9 -) Extension kolonu 3 haneli olanları listeleyelim.
SELECT Extension
FROM dbo.Employees
WHERE LEN(Extension) = 3;
SELECT *
FROM dbo.Employees
WHERE LEN(Extension) = 4;
10 -) Çalışanların yaşlarını bulalım.
SELECT FirstName,
LastName,
DATEDIFF(YEAR, BirthDate, GETDATE()) AS YAS
FROM dbo.Employees;
11 -) Çalışanların işe kaç yaşında başladıklarını bulalım.
SELECT DATEDIFF(YEAR, BirthDate, HireDate) AS IseBaslangicTarihi
FROM dbo.Employees;
12 -) Region kolonu NULL olanları listeleyelim.
SELECT *
FROM dbo.Employees
WHERE Region IS NULL;
13 -) Çalışanların adlarını A’dan Z’ye ve Z’den A’ya listeleyelim.
SELECT FirstName
FROM dbo.Employees
ORDER BY FirstName ASC;
SELECT FirstName
FROM dbo.Employees
ORDER BY FirstName DESC;
14 -) Çalışanların adlarını A’dan Z’ye soyadlarını Z’den A’ya listeleyelim.
SELECT FirstName,
LastName
FROM dbo.Employees
ORDER BY FirstName ASC,
LastName DESC;
15 -) Şirket çalışanları ortalama yaşı nedir?
SELECT AVG(DATEDIFF(YEAR, BirthDate, GETDATE())) AS CalisanlarinToplamOrtalamaYasi
FROM dbo.Employees;
16 -) Müşteri adı A ile başlayan şirketler hangileridir?
SELECT *
FROM dbo.Customers
WHERE CompanyName LIKE 'A%';
17 -) Fax ve Region kısmı null olan müşteriler hangileridir?
SELECT *
FROM dbo.Customers
WHERE Fax IS NULL
AND Region IS NULL;
18 -) CustomerID’si AA ile biten müşterileri listeleyelim.
SELECT *
FROM dbo.Customers
WHERE CustomerID LIKE '%AA';
19 -) Ürünlerin KDV dahil ve KDV hariç fiyatlarını ekrana yazdırın.
SELECT ProductName, UnitPrice AS KDVHaric, (UnitPrice * 0.18 + UnitPrice) AS KDVDahil FROM dbo.Products;
20 -) KDV’si 10 TL’den düşük olan ürünler hangileridir?
SELECT ProductName,
(UnitPrice * 0.18) AS KDVUcreti
FROM dbo.Products
WHERE (UnitPrice * 0.18) < 10;
21 -) En pahalı beş ürün nedir?
SELECT TOP 5
ProductName,
(UnitPrice * 0.18 + UnitPrice) AS KDVDahil
FROM dbo.Products
ORDER BY KDVDahil DESC;
22 -) En ucuz beş ürünün ortalama fiyatı nedir?
SELECT AVG(Tablomuz.UnitPrice) AS OrtalamaFiyat
FROM
(
SELECT TOP 5
UnitPrice
FROM dbo.Products
ORDER BY UnitPrice ASC
) AS Tablomuz;
23 -) Ürün adlarını büyüterek getir.
SELECT UPPER(ProductName)
FROM dbo.Products;
24 -) Stoğu olmayan ürünler kaç tanedir?
SELECT *
FROM dbo.Products
WHERE UnitsInStock = 0;
25 -) Stok Adedi 20 ile 50 arasındaki ürünlerini getirin
SELECT ProductName,
UnitsInStock
FROM dbo.Products
WHERE UnitsInStock
BETWEEN 20 AND 50;
26 -) En pahalı ürünün fiyatını getirin.
SELECT MAX(UnitPrice)
FROM dbo.Products;
27 -) Kaç çeşit ürün var?
SELECT COUNT(ProductID)
FROM dbo.Products;
28 -) En pahalı ürünün adı nedir?
SELECT ProductName
FROM dbo.Products
WHERE UnitPrice =
(
SELECT MAX(UnitPrice)FROM dbo.Products
);
29 -) Müşterilerin ülkelere göre sayılarını veren sorgu.
SELECT Country AS Ülke,
COUNT(CustomerID) AS MusteriSayisi
FROM dbo.Customers
GROUP BY Country;
30 -) Her kategoriden kaç tane ürün var?
SELECT c.CategoryName,
COUNT(p.ProductID) AS ToplamAdet
FROM dbo.Products p
INNER JOIN dbo.Categories c
ON c.CategoryID = p.CategoryID
GROUP BY CategoryName;
31 -) Çalışanlar ne kadarlık satış yapmışlar?
SELECT e.FirstName + ' ' + e.LastName AS CalisanAdSoyad,
SUM(od.Quantity * od.UnitPrice) AS ToplamSatisMiktari
FROM dbo.Employees e
INNER JOIN dbo.Orders o
ON o.EmployeeID = e.EmployeeID
INNER JOIN dbo.[Order Details] od
ON od.OrderID = o.OrderID
GROUP BY e.FirstName + ' ' + e.LastName;
32 -) Hangi sipariş bana ne kadar kazandırmış?
SELECT OrderID,
SUM(UnitPrice * Quantity * (1 - Discount)) AS Kazanc
FROM [Order Details]
GROUP BY OrderID;
33 -) 50’den fazla satışı olan çalışanlarımı nasıl bulurum?
SELECT e.FirstName + ' ' + e.LastName AS CalisanAdSoyad,
COUNT(o.OrderID) AS SatisMiktari
FROM dbo.Orders o
INNER JOIN dbo.Employees e
ON e.EmployeeID = o.EmployeeID
GROUP BY e.FirstName + ' ' + e.LastName
HAVING COUNT(o.OrderID) > 50;
34 -) 100 $ ya da TL’den büyük ürünleri görmek istiyorum.
SELECT ProductName
FROM dbo.Products
WHERE UnitPrice > 100;
35 -) UnitsInStock (stok) değeri 15’un altında olan ürünlerin adı, fiyatı ve stok bilgileri.
SELECT ProductName,
UnitPrice,
UnitsInStock
FROM dbo.Products
WHERE UnitsInStock < 15;
36 -) Brazil’de bulunan müşterilerin Şirket Adı, TemsilciAdi, Adres, Şehir, Ülke bilgileri.
SELECT CompanyName,
ContactName,
[Address],
City,
Country
FROM dbo.Customers
WHERE Country = 'Brazil';
37 -) Londra ve Paris’te yaşayan müşterilerimi listeleyin?
SELECT CompanyName,
ContactName,
City
FROM dbo.Customers
WHERE City IN ( 'London', 'Paris' );
38 -) Adı A harfi ile çalışan müşterilerimi listeleyin?
SELECT *
FROM dbo.Customers
WHERE ContactName LIKE 'A%';
SELECT *
FROM dbo.Customers
WHERE CompanyName LIKE 'A%';
SELECT CompanyName,
ContactName,
Phone
FROM dbo.Customers
WHERE CompanyName LIKE 'A%'
AND ContactName LIKE 'A%';
39 -) 50$ ya da TL ile 100$ ya da TL arasında bulunan tüm ürünlerin adları ve fiyatları nelerdir?
SELECT ProductName,
UnitPrice
FROM dbo.Products
WHERE UnitPrice
BETWEEN 50 AND 100;
40 -) Brezilya’da olmayan müşteriler.
SELECT CompanyName,
ContactName,
[Address],
City,
Country
FROM dbo.Customers
WHERE Country != 'Brazil';
41 -) Hem Mexico D.F’da ikamet eden hem de ContactTitle bilgisi ‘owner’ olan müşterileri listeleyin.
SELECT CustomerID,
ContactTitle,
Address
FROM dbo.Customers
WHERE City = 'México D.F.'
AND ContactTitle = 'Owner';
42 -) Satışı yapılmayan ürün listesi.
SELECT ProductName,
UnitsInStock
FROM dbo.Products
WHERE Discontinued = 1;
SELECT ProductName,
UnitsInStock
FROM dbo.Products
WHERE Discontinued = 1
AND UnitsInStock > 0;
43 -) Sipariş tarihleri 1 Haziran 1996 ile 30 Kasım 1993 tarihleri arasındaki siparişlerin OrderID ve ShipCountry bilgileri nedir?
SELECT OrderID,
ShipCountry
FROM dbo.Orders
WHERE OrderDate
BETWEEN '1996-06-01' AND '1996-11-30';
44 -) Kaç farklı ülkeye ihracat yapılıyor?
SELECT COUNT(DISTINCT Country) AS UlkeSayisi
FROM dbo.Customers;
45 -) ALFKI CustomerID’sine sahip müşterimin sipariş sayısı nedir?
SELECT COUNT(*) AS SiparisSayisi
FROM dbo.Orders
WHERE CustomerID = 'ALFKI';
46 -) Müşterilerimin içinde en uzun isimli müşterinin (harf sayısı) nedir?
SELECT MAX(LEN(CompanyName)) AS MaksimumUzunluk
FROM dbo.Customers;
47 -) Hangi üründen toplam kaç adet satılmış?
SELECT ProductID,
SUM(Quantity) AS AlinmişUrunAdedi
FROM dbo.[Order Details]
GROUP BY ProductID
ORDER BY AlinmişUrunAdedi DESC;
48 -) 1000 Adetten fazla satılan ürünler nelerdir?
SELECT ProductID,
SUM(Quantity) AS AlinmişUrunAdedi
FROM dbo.[Order Details]
GROUP BY ProductID
HAVING SUM(Quantity) > 1000;
49 -) Ortalamanın altında bir fiyata sahip ürünlerin adı ve fiyatı nedir?
SELECT AVG(UnitPrice)
FROM dbo.Products;
SELECT ProductName,
UnitPrice
FROM dbo.Products
WHERE UnitPrice <
(
SELECT AVG(UnitPrice)FROM dbo.Products
);
50 -) Hangi müşteriler hiç sipariş vermemiş?
SELECT DISTINCT
CustomerID
FROM dbo.Orders;
SELECT *
FROM dbo.Customers
WHERE CustomerID NOT IN
(
SELECT DISTINCT CustomerID FROM dbo.Orders
);
51 -) Hangi ürün hangi kategoridedir?
SELECT ProductName,
CategoryName
FROM dbo.Products
INNER JOIN dbo.Categories
ON Categories.CategoryID = Products.CategoryID;
52 -) Bütün nakliyecilerin listesi?
SELECT CompanyName
FROM dbo.Shippers;
53 -) Hangi çalışanım hangi bölgeden sorumludur?
SELECT e.LastName + ' ' + e.LastName AS AdSoyad,
t.TerritoryDescription
FROM dbo.Employees e
INNER JOIN dbo.EmployeeTerritories et
ON et.EmployeeID = e.EmployeeID
INNER JOIN dbo.Territories t
ON t.TerritoryID = et.TerritoryID;
SELECT e.LastName + ' ' + e.LastName AS AdSoyad,
t.TerritoryDescription
FROM dbo.Employees e
INNER JOIN dbo.EmployeeTerritories et
ON et.EmployeeID = e.EmployeeID
INNER JOIN dbo.Territories t
ON t.TerritoryID = et.TerritoryID
WHERE e.LastName + ' ' + e.LastName = 'Buchanan Buchanan';
54 -) Hangi tedarikçi hangi ürünü sağlıyor?
SELECT ProductName,
CompanyName
FROM dbo.Products
INNER JOIN dbo.Suppliers
ON Suppliers.SupplierID = Products.SupplierID;
55 -) Beverages kategorisine ait ürünlerin listesi.
SELECT *
FROM dbo.Products
WHERE CategoryID =
(
SELECT CategoryID FROM dbo.Categories WHERE CategoryName = 'Beverages'
);
56 -) Micheal’ın yada Laura’nın hemşerisi olan çalışanları listeleyelim?
SELECT *
FROM dbo.Employees
WHERE City IN
(
SELECT City FROM dbo.Employees WHERE FirstName IN ( 'Michael', 'Laura' )
);
57 -) Ürünlerimin karşısına kategori getirme.
SELECT p.ProductName,
(
SELECT c.CategoryName
FROM dbo.Categories c
WHERE c.CategoryID = p.CategoryID
) AS CategoryName
FROM dbo.Products p;
SELECT ProductName,
CategoryName
FROM dbo.Products
INNER JOIN dbo.Categories
ON Categories.CategoryID = Products.CategoryID;
Yukarıda yazdığım sorulara zamanla yeni sorular ekleyeceğim.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.