SLQ - Semestr I

.

Wybieranie danych z pojedynczej tabeli. Baza NORTHWIND:

1.  Wybierz nazwy i adresy wszystkich klientów

USE Northwind

SELECT CompanyName, Address FROM Customers

2.  Wybierz nazwiska i numery telefonów pracowników

USE Northwind

SELECT Lastname, HomePhone FROM Employees

3.  Wybierz nazwy i ceny produktów

USE Northwind

SELECT ProductName, UnitPrice FROM Products

4.  Poka¿ wszystkie kategorie produktów (nazwy i opisy)

USE Northwind

SELECT CategoryName, Description FROM Categories

5.  Poka¿ nazwy i adresy stron www dostawców

USE Northwind

SELECT CompanyName, HomePage FROM Suppliers

6.  Wybierz nazwy i adresy wszystkich klientów maj¹cych siedziby w Londynie

USE Northwind

SELECT CompanyName, Address FROM Customers

WHERE City='London'

7.  Wybierz nazwy i adresy wszystkich klientów maj¹cych siedziby we Francji lub w Hiszpanii

USE Northwind

SELECT CompanyName, Address, Country FROM Customers

WHERE Country='France' OR Country='Spain'

8.  Wybierz nazwy i ceny produktów o cenie jednostkowej pomiêdzy 20.00 a 30.00

USE Northwind

SELECT ProductName, UnitPrice FROM Products

WHERE UnitPrice BETWEEN 20 AND 30

9.  Wybierz nazwy i ceny produktów z kategorii “meat

USE Northwind

SELECT ProductName, UnitPrice FROM Categories

INNER JOIN Products ON Products.CategoryID=Categories.CategoryID

WHERE CategoryName LIKE '%meat%'


10.  Wybierz nazwy produktów oraz inf. o stanie magazynu dla produktów dostarczanych przez firmê
“Tokyo Traders

USE Northwind

SELECT ProductName, UnitsInStock FROM Suppliers

INNER JOIN Products ON Products.SupplierID=Suppliers.SupplierID

WHERE CompanyName='Tokyo Traders'

11.  Wybierz nazwy produktów których nie ma w magazynieSzukamy informacji o produktach
sprzedawanych w butelkach (bottle)

USE Northwind

SELECT ProductName, UnitsInStock,QuantityPerUnit FROM Products WHERE UnitsInStock=0 and QuantityPerUnit LIKE '%bottle%' --zero rekordow

13.  Wyszukaj informacje o stanowisku pracowników, których nazwiska zaczynaj¹ siê na literê z
zakresu od B do L

USE Northwind

SELECT LastName, title FROM Employees

WHERE LastName LIKE '[B-L]%'

14.  Wyszukaj informacje o stanowisku pracowników, których nazwiska zaczynaj¹ siê na literê B lub L

USE Northwind

SELECT LastName, title FROM Employees

WHERE LastName LIKE 'B%' OR LastName LIKE 'L%'

15.  ZnajdŸ nazwy kategorii, które w opisie zawieraj¹ przecinek

USE Northwind

SELECT CategoryName, [Description] FROM Categories

WHERE [Description] LIKE '%,%'

16.  ZnajdŸ klientów, którzy w swojej nazwie maj¹ w którymœ miejscu s³owo “Store

USE Northwind

SELECT CompanyName FROM Customers

WHERE CompanyName LIKE '%Store%'

17.  Szukamy informacji o produktach o cenach mniejszych ni¿ 10 lub wiêkszych ni¿ 20

USE Northwind

SELECT ProductName, UnitPrice FROM Products WHERE UnitPrice NOT BETWEEN 10 AND 20 ORDER BY UnitPrice

18.  Napisz instrukcjê select tak aby wybraæ numer zlecenia, datê zamówienia, numer klienta dla
wszystkich niezrealizowanych jeszcze zlece
ñ, dla których krajem odbiorcy jest Argentyna

USE Northwind

SELECT OrderID, OrderDate, CustomerID, ShipCountry, ShippedDate FROM Orders

WHERE ShipCountry='Argentina' AND ShippedDate IS NULL

19.  Wybierz nazwy i kraje wszystkich klientów, wyniki posortuj wed³ug kraju, w ramach danego kraju
nazwy firm posortuj alfabetycznie

USE Northwind

SELECT CompanyName, Country FROM Customers

ORDER BY 2, 1


20.  Wybierz informacjê o produktach (grupa, nazwa, cena), produkty posortuj wg grup a w grupach
malej
¹co wg ceny

USE Northwind

SELECT CategoryID, ProductName, UnitPrice FROM Products

ORDER BY 1, 3 DESC

21.  Wybierz nazwy i kraje wszystkich klientów maj¹cych siedziby w Japonii (Japan) lub we W³oszech
(Italy), wyniki posortuj wed
³ug kraju, w ramach danego kraju nazwy firm posortuj alfabetycznie

USE Northwind

SELECT CompanyName, Country FROM Customers

WHERE Country='Japan' OR Country='Italy'

ORDER BY 2, 1

--nie ma Japan


Grupowanie, funkcje agreguj¹ce Baza NORTHWIND

1.  Policz œredni¹ cenê jednostkow¹ dla wszystkich produktów w tabeli products.

USE Northwind

SELECT AVG(UnitPrice) as srednia FROM Products

2.  Zsumuj wszystkie wartoœci w kolumnie quantity w tabeli order details

USE Northwind

SELECT SUM(Quantity) as ilosc FROM [order details]

3.  Podaj liczbê produktów o cenach mniejszych ni¿ 10$ lub wiêkszych ni¿ 20$

USE Northwind

SELECT COUNT(ProductID) as ilosc FROM Products

WHERE UnitPrice<10 or UnitPrice>20

4.  Podaj maksymaln¹ cenê produktu dla produktów o cenach poni¿ej 20$

USE Northwind

SELECT ProductID, UnitPrice FROM Products WHERE UnitPrice=(

SELECT MAX(UnitPrice) as Maks FROM Products WHERE UnitPrice<20)

5.  Podaj maksymaln¹ i minimaln¹ i œredni¹ cenê produktu dla produktów o produktach
sprzedawanych w butelkach (bottle)

USE Northwind

SELECT MAX(UnitPrice), MIN(UnitPrice), AVG(UnitPrice) FROM Products

WHERE QuantityPerUnit LIKE '%bottle%'

6.  Wypisz informacjê o wszystkich produktach o cenie powy¿ej œredniej

USE Northwind

SELECT * FROM Products WHERE UnitPrice>(

SELECT AVG(UnitPrice) as srednia FROM Products)

7.  Podaj sumê zamówienia o numerze 10250

USE Northwind

SELECT OrderID, SUM(UnitPrice*Quantity) as suma FROM [order details]

WHERE OrderID=10250

GROUP BY OrderID

8.  Napisz polecenie, które zwraca informacje o zamówieniach z tablicy order details. Zapytanie ma
grupowa
æ i wyœwietlaæ identyfikator ka¿dego produktu a nastêpnie obliczaæ ogóln¹ zamówion¹ iloœæ.
Og
ólna iloœæ jest sumowana funkcj¹ agreguj¹c¹ SUM i wyœwietlana jako jedna wartoœæ dla ka¿dego
produktu.

USE Northwind

SELECT OrderID, SUM(Quantity) as ilosc FROM [order details]

GROUP BY OrderID

--???

9.  Podaj maksymaln¹ cenê zamawianego produktu dla ka¿dego zamówienia


USE Northwind

SELECT OrderID, MAX(UnitPrice) as Maks FROM [order details]

GROUP BY OrderID

10.  Posortuj zamówienia wg maksymalnej ceny produktu

USE Northwind

SELECT OrderID, MAX(UnitPrice) as Maks FROM [order details]

GROUP BY OrderID

ORDER BY 2

11.  Podaj maksymaln¹ i minimaln¹ cenê zamawianego produktu dla ka¿dego zamówienia

USE Northwind

SELECT OrderID, MIN(UnitPrice)as MInu ,MAX(UnitPrice) as Maks FROM [order details]

GROUP BY OrderID

12.  Podaj liczbê zamówieñ dostarczanych przez poszczególnych spedytorów

USE Northwind

SELECT ShipVia, COUNT(ShipVia) as ilosc FROM Orders

GROUP BY ShipVia

13.  Który z spedytorów by³ najaktywniejszy w 1997 roku

USE Northwind

SELECT TOP 1 WITH TIES ShipVia, COUNT(ShipVia) as ilosc FROM Orders

GROUP BY ShipVia

ORDER BY 2

14.  Wyœwietl zamówienia dla których liczba pozycji zamówienia jest wiêksza ni¿ 5

USE Northwind

SELECT OrderID, COUNT(OrderID) as ilosc FROM [order details]

GROUP BY OrderID

HAVING COUNT(OrderID)>5

15.  Wyœwietl klientów którzy dla których w 1998 roku zrealizowano wiêcej ni¿ 8 zamówieñ (wyniki
posortuj malej
¹co wg ³¹cznej kwoty za dostarczenie zamówieñ dla ka¿dego z klientów)

USE Northwind

SELECT CustomerID, COUNT(CustomerID) as ilosc FROM Orders

WHERE YEAR(OrderDate)=1997

GROUP BY CustomerID

HAVING COUNT(CustomerID)>8


£¹czenie danych z wielu tabel Baza NORTHWIND

1. Napisz polecenie zwracaj¹ce nazwy produktów i firmy je dostarczaj¹ce (tak aby produkty bez “dostarczycieli” i “dostarczyciele” bez produktów nie pojawiali siê w wyniku).

USE Northwind

SELECT ProductName, CompanyName FROM Products

INNER JOIN Suppliers ON Suppliers.SupplierID = Products.SupplierID

3.  Napisz polecenie zwracaj¹ce jako wynik nazwy klientów, którzy z³o¿yli zamówienia po 01 marca
1998

USE Northwind

SELECT * FROM Orders

INNER JOIN Customers ON Customers.CustomerID=Orders.CustomerId

WHERE YEAR(OrderDate) >= 1998 AND MONTH(OrderDate)>=3 AND DAY(OrderDate)>1

4.  Napisz polecenie zwracaj¹ce wszystkich klientów z datami zamówieñ.

USE Northwind

SELECT CompanyName, OrderDate FROM Customers

INNER JOIN Orders ON Customers.CustomerID=Orders.CustomerID

Baza LIBRARY

1.  Napisz polecenie, które wyœwietla listê dzieci bêd¹cych cz³onkami biblioteki

USE Library

SELECT firstname, lastname FROM juvenile

INNER JOIN member ON juvenile.member_no=member.member_no

2.  Interesuje nas imiê, nazwisko i data urodzenia dziecka.

USE Library

SELECT firstname, lastname, birth_date FROM juvenile

INNER JOIN member ON juvenile.member_no=member.member_no

3.  Napisz polecenie, które podaje tytu³y aktualnie wypo¿yczonych ksi¹¿ek

USE Library

SELECT DISTINCT title FROM loan

INNER JOIN title ON loan.title_no=title.title_no

4.  Podaj informacje o karach zap³aconych za przetrzymywanie ksi¹¿ki o tytule Tao Teh King.
Interesuje nas data oddania ksi
¹¿ki, ile dni by³a przetrzymywana i jak¹ zap³acono karê

USE library

SELECT loanhist.in_date, DATEDIFF(d,loanhist.in_date,loanhist.due_date), fine_paid FROM title

INNER JOIN loanhist ON loanhist.title_no=title.title_no

WHERE title.title = 'Tao Teh King' AND fine_assessed IS NOT NULL AND fine_assessed>0

5.  Napisz polecenie które podaje listê ksi¹¿ek (numery ISBN) zarezerwowanych przez osobê o
nazwisku: Stephen A. Graff


USE library

SELECT isbn FROM member

INNER JOIN reservation ON reservation.member_no = member.member_no

WHERE member.lastname='Graff' AND member.firstname='Stephen' AND member.middleinitial='A'

Baza NORTHWIND

1.  Wybierz nazwy i ceny produktów o cenie jednostkowej pomiêdzy 20.00 a 30.00, dla ka¿dego
produktu podaj dane adresowe dostawcy

USE Northwind

SELECT ProductName, UnitPrice, CompanyName, Address FROM Products INNER JOIN Suppliers ON Suppliers.SupplierID=Products.SupplierID WHERE UnitPrice BETWEEN 20 AND 30

2.  Wybierz nazwy produktów oraz inf. o stanie magazynu dla produktów dostarczanych przez firmê
“Tokyo Traders

USE Northwind

SELECT ProductName, UnitsInStock FROM Suppliers

INNER JOIN Products ON Products.SupplierID=Suppliers.SupplierID

WHERE CompanyName='Tokyo Traders'

3.  Wybierz nazwy i numery telefonów dostawców, dostarczaj¹cych produkty, których aktualnie nie
ma w magazynie

USE Northwind

SELECT ProductName, CompanyName, Phone FROM Products INNER JOIN Suppliers ON Suppliers.SupplierID=Products.SupplierID WHERE UnitsInStock=0

4.  Napisz polecenie zwracaj¹ce listê produktów zamawianych w dniu 1996-07-08.

USE Northwind

SELECT ProductName FROM Orders

INNER JOIN [Order Details] ON Orders.OrderID=[Order Details].OrderID

INNER JOIN Products ON [Order Details].ProductID=Products.ProductID

WHERE YEAR(OrderDate)=1996 AND MONTH(OrderDate)=7 and DAY(OrderDate)=8

5.  Wybierz nazwy i ceny produktów o cenie jednostkowej pomiêdzy 20.00 a 30.00, dla ka¿dego
produktu podaj dane adresowe dostawcy, interesuj
¹ nas tylko produkty z kategorii Meat/Poultry

USE Northwind

SELECT ProductName, UnitPrice, CompanyName, Address FROM Products INNER JOIN Categories ON Categories.CategoryID=Products.CategoryID INNER JOIN Suppliers ON Suppliers.SupplierID=Products.SupplierID WHERE UnitPrice BETWEEN 20 AND 30 AND CategoryName='Meat/Poultry'

6.  Wybierz nazwy i ceny produktów z kategorii Confections dla ka¿dego produktu podaj nazwê
dostawcy.

USE Northwind

SELECT ProductName, UnitPrice, CompanyName FROM Products INNER JOIN Categories ON Categories.CategoryID=Products.CategoryID INNER JOIN Suppliers ON Suppliers.SupplierID=Products.SupplierID WHERE CategoryName='Confections'

7.  Wybierz nazwy i numery telefonów klientów , którym w 1997 roku przesy³ki dostarcza³a firma
“United Package


USE Northwind

SELECT Customers.CompanyName, Customers.Phone FROM Shippers

INNER JOIN Orders ON Shippers.ShipperID=Orders.ShipVia

INNER JOIN Customers ON Customers.CustomerID=Orders.CustomerID

WHERE Shippers.CompanyName='United Package' AND YEAR(OrderDate)=1997

8. Wybierz nazwy i numery telefonów klientów, którzy kupowali produkty z kategorii “Confections

USE Northwind

SELECT DISTINCT Customers.CompanyName, Customers.Phone, Categories.CategoryName FROM Categories

INNER JOIN Products ON Categories.CategoryID=Products.CategoryID

INNER JOIN [Order Details] ON [Order Details].ProductID=Products.ProductID

INNER JOIN Orders ON Orders.OrderID=[Order Details].OrderID

INNER JOIN Customers ON Customers.CustomerID=Orders.CustomerID

WHERE CategoryName='Confections'

Baza LIBRARY

1.  Napisz polecenie, które wyœwietla listê dzieci bêd¹cych cz³onkami biblioteki. Interesuje nas imiê,
nazwisko, data urodzenia dziecka i adres zamieszkania dziecka.

USE Library

SELECT firstname, lastname, birth_date, street FROM juvenile INNER JOIN member ON member.member_no=juvenile.member_no INNER JOIN adult ON adult.member_no=juvenile.adult_member_no

2.  Napisz polecenie, które wyœwietla listê dzieci bêd¹cych cz³onkami biblioteki. Interesuje nas imiê,
nazwisko, data urodzenia dziecka, adres zamieszkania dziecka oraz imi
ê i nazwisko rodzica.

--???

Baza NORTHWIND

1.  Napisz polecenie, które wyœwietla listê wszystkich kupuj¹cych te same produkty.

USE joindb

SELECT a.buyer_id AS buyer1, a.prod_id,b.buyer_id AS buyer2

FROM sales AS a

JOIN sales AS b

ON a.prod_id = b.prod_id

WHERE a.buyer_id < b.buyer_id

2.  Napisz polecenie, które pokazuje pary pracowników zajmuj¹cych to samo stanowisko

USE northwind

SELECT a.employeeid, LEFT(a.lastname,10) AS name

,LEFT(a.title,10) AS title

,b.employeeid, LEFT(b.lastname,10) AS name

,LEFT(b.title,10) AS title

FROM employees AS a

INNER JOIN employees AS b

ON a.title = b.title

WHERE a.employeeid < b.employeeid

3.  Napisz polecenie, które wyœwietla pracowników oraz ich podw³adnych

USE Northwind

SELECT e1.lastname+' '+e1.firstname as szef, e2.lastname+' '+e2.firstname as podwladny FROM Employees

as e1

JOIN Employees as e2 ON e1.EmployeeID=e2.ReportsTo


ORDER BY 1

4. Napisz polecenie, które wyœwietla pracowników, którzy nie maj¹ podw³adnych

USE Northwind

SELECT FirstName+' '+Lastname FROM Employees

WHERE ReportsTo IS NULL

Baza LIBRARY

1.  Napisz polecenie, które wyœwietla adresy cz³onków biblioteki, którzy maj¹ dzieci urodzone przed 1
stycznia 1996

USE Library

SELECT street, city FROM adult

INNER JOIN juvenile ON adult.member_no=juvenile.adult_member_no

WHERE birth_date < '1996-01-01'

2.  Napisz polecenie, które wyœwietla adresy cz³onków biblioteki, którzy maj¹ dzieci urodzone przed 1
stycznia 1996. Interesuj
¹ nas tylko adresy takich cz³onków biblioteki, którzy aktualnie nie
przetrzymuj
¹ ksi¹¿ek.

USE Library

SELECT DISTINCT adult.member_no FROM adult

INNER JOIN juvenile ON adult.member_no=juvenile.adult_member_no

WHERE birth_date < '1996-01-01' AND adult.member_no NOT IN (SELECT DISTINCT member_no FROM loan)

USE Library

SELECT DISTINCT adult.member_no, adult.street,loan.member_no FROM adult

INNER JOIN juvenile ON adult.member_no=juvenile.adult_member_no

LEFT OUTER JOIN loan ON loan.member_no=adult.member_no

WHERE birth_date < '1996-01-01' AND loan.member_no IS NULL

3.  Napisz polecenie które zwraca imiê i nazwisko (jako pojedyncz¹ kolumnê name), oraz informacje o
adresie: ulica, miasto, stan kod (jako pojedyncz
¹ kolumnê address) dla wszystkich doros³ych cz³onków
biblioteki.

USE Library

SELECT firstname+' '+lastname as name, street+' '+city+' '+state+' '+zip as address FROM member

INNER JOIN adult ON adult.member_no=member.member_no

4.  Napisz polecenie, które zwraca: isbn, copy_no, on_loan, title, translation, cover, dla ksi¹¿ek o isbn
1, 500 i 1000.
Wynik posortuj wg ISBN

USE Library

SELECT item.isbn, copy_no, on_loan, title, [translation], cover FROM item

INNER JOIN copy ON item.isbn=copy.isbn

INNER JOIN title ON title.title_no=copy.title_no

WHERE item.isbn=1 OR item.isbn=500 OR item.isbn=1000

ORDER BY item.isbn

5.  Napisz polecenie które zwraca o u¿ytkownikach biblioteki o nr 250, 342, i 1675 (dla ka¿dego
u
¿ytkownika: nr, imiê i nazwisko cz³onka biblioteki), oraz informacjê o zarezerwowanych ksi¹¿kach
(isbn, data)

USE Library

SELECT member.member_no, firstname, lastname, isbn, log_date FROM member

INNER JOIN reservation ON reservation.member_no=member.member_no

WHERE member.member_no=250 OR member.member_no=342 OR member.member_no=1675


6. Podaj listê cz³onków biblioteki mieszkaj¹cych w Arizonie (AZ) maj¹ wiêcej ni¿ dwoje dzieci zapisanych do biblioteki

USE Library

SELECT adult_member_no, count(juvenile.member_no) as ilosc_dzieci, lastname+' '+firstname FROM

juvenile

INNER JOIN member ON member.member_no=juvenile.adult_member_no

GROUP BY adult_member_no, lastname+' '+firstname

HAVING count(juvenile.member_no)>2

Baza NORTHWIND

1.  Dla ka¿dej kategorii produktu, podaj ³¹czn¹ liczbê zamówionych jednostek

USE Northwind

SELECT Categories.CategoryName, Sum([order details].Quantity) as ilosc FROM [order details]

INNER JOIN Products ON [order details].productID=products.productID

INNER JOIN Categories ON products.CategoryID=Categories.CategoryID

GROUP BY Categories.CategoryName

ORDER BY 2

2.  Dla ka¿dego zamówienia podaj ³¹czn¹ liczbê zamówionych jednostek

USE Northwind

SELECT OrderID, Sum(Quantity) as ilosc FROM [Order Details]

GROUP BY OrderID

3.  Zmodyfikuj poprzedni przyk³ad, aby pokazaæ tylko takie zamówienia, dla których ³¹czna liczba
jednostek jest wi
êksza ni¿ 250

USE Northwind

SELECT OrderID, Sum(Quantity) as ilosc FROM [Order Details]

GROUP BY OrderID

HAVING Sum(Quantity)>250


Podzapytania Baza NORTHWIND

1.  Wybierz nazwy i numery telefonów klientów , którym w 1997 roku przesy³ki dostarcza³a firma
“United Package

USE Northwind

SELECT Customers.CompanyName, Customers.Phone, Orders.OrderID,ShipVia FROM Shippers

INNER JOIN Orders ON Orders.ShipVia=Shippers.ShipperID

INNER JOIN Customers ON Customers.CustomerID=Orders.CustomerID

WHERE Shippers.CompanyName='United Package' AND YEAR(Orders.ShippedDate)=1997

2.  Wybierz nazwy i numery telefonów klientów, którzy kupowali produkty z kategorii “Confections

USE Northwind

SELECT DISTINCT Customers.CompanyName, Customers.Phone FROM Categories

INNER JOIN Products ON Products.CategoryID=Categories.CategoryID

INNER JOIN [order details] ON [order details].ProductID=Products.ProductID

INNER JOIN Orders ON Orders.OrderID=[order details].OrderID

INNER JOIN Customers ON Customers.CustomerID=Orders.CustomerID

WHERE CategoryName='Confections'

3.  Wybierz nazwy i numery telefonów klientów, którzy nie kupili ¿adnego produktu z kategorii
Confections

USE Northwind

SELECT CompanyName, Phone FROM Customers

WHERE CompanyName NOT IN (

SELECT DISTINCT Customers.CompanyName FROM Categories

INNER JOIN Products ON Products.CategoryID=Categories.CategoryID

INNER JOIN [order details] ON [order details].ProductID=Products.ProductID

INNER JOIN Orders ON Orders.OrderID=[order details].OrderID

INNER JOIN Customers ON Customers.CustomerID=Orders.CustomerID

WHERE CategoryName='Confections')

4.  Wybierz nazwy i numery telefonów klientów, którzy kupili wiêcej ni¿ 3 ró¿ne produkty z kategorii
“Confections

USE Northwind

SELECT Customers.CompanyName, COUNT([order details].ProductID) FROM Categories

INNER JOIN Products ON Products.CategoryID=Categories.CategoryID

INNER JOIN [order details] ON [order details].ProductID=Products.ProductID

INNER JOIN Orders ON Orders.OrderID=[order details].OrderID

INNER JOIN Customers ON Customers.CustomerID=Orders.CustomerID

WHERE CategoryName='Confections'

GROUP BY Customers.CompanyName

HAVING COUNT([order details].ProductID)>3

ORDER BY 1

5.  Dla ka¿dego produktu podaj maksymaln¹ liczbê zamówionych jednostek

USE Northwind

SELECT Products.ProductID, MAX(Quantity) FROM Products

RIGHT OUTER JOIN [order details] ON [order details].ProductID=Products.ProductID

GROUP BY Products.ProductID


ORDER BY 1

6.  Podaj wszystkie produkty których cena jest mniejsza ni¿ œrednia cena produktu

USE Northwind

SELECT Products.ProductID, UnitPrice, srednia FROM Products

INNER JOIN (SELECT Products.ProductID, avg(t2.UnitPrice) as srednia FROM Products

INNER JOIN (SELECT DISTINCT ProductID, UnitPrice FROM [order details]) as t2 ON t2.ProductID=Products.ProductID

GROUP BY Products.ProductID) as t2 ON t2.ProductID=Products.ProductID --WHERE UnitPrice<srednia -- inaczej zero rekordow Order by 1

7.  Podaj wszystkie produkty których cena jest mniejsza ni¿ œrednia cena produktu danej kategorii

USE Northwind

SELECT ProductID, UnitPrice,srednia, Products.CategoryId FROM Products

INNER JOIN (SELECT Categories.CategoryID, AVG(Products.UnitPrice) as srednia FROM Categories INNER JOIN Products ON Products.CategoryID=Categories.CategoryID GROUP BY Categories.CategoryID) as t2 ON t2.CategoryID=Products.CategoryID

WHERE UnitPrice<srednia

ORDER BY 1

8.  Dla ka¿dego produktu podaj jego nazwê, cenê, œredni¹ cenê wszystkich produktów oraz ró¿nicê
mi
êdzy cen¹ produktu a œredni¹ cen¹ wszystkich produktów

USE Northwind

SELECT ProductName, UnitPrice, (SELECT AVG(UnitPrice) FROM Products),

UnitPrice - (SELECT AVG(UnitPrice) FROM Products) as roznica FROM Products

9.  Dla ka¿dego produktu podaj jego nazwê kategorii, nazwê produktu, cenê, œredni¹ cenê wszystkich
produkt
ów danej kategorii oraz ró¿nicê miêdzy cen¹ produktu a œredni¹ cen¹ wszystkich produktów
danej kategorii.

USE Northwind

SELECT CategoryName, ProductName, UnitPrice, srednia, UnitPrice-srednia as roznica FROM Products

INNER JOIN (

SELECT Products.CategoryID, AVG(Products.UnitPrice) as srednia FROM Products

GROUP BY Products.CategoryID) as t2 ON t2.CategoryID=Products.CategoryID

INNER JOIN Categories ON Categories.CategoryID=Products.CategoryID

10.  Podaj ³¹czn¹ wartoœæ zamówienia o numerze 1025 (uwzglêdnij cenê za przesy³kê)

USE Northwind

SELECT

(SELECT SUM(UnitPrice*Quantity*(1-Discount)) FROM [order details] WHERE OrderID=10250)

+

(SELECT freight FROM orders WHERE OrderID=10250) as wynik

11.  Podaj ³¹czn¹ wartoœæ zamówieñ ka¿dego zamówienia (uwzglêdnij cenê za przesy³kê)

USE Northwind

SELECT orders.OrderID, freight, suma, Freight+suma as total FROM orders

INNER JOIN (SELECT OrderID, SUM(UnitPrice*Quantity*(1-Discount)) as suma FROM [order details]

GROUP BY OrderID) as t2 ON t2.OrderID=Orders.OrderID

12.  Czy s¹ jacyœ klienci którzy nie z³o¿yli ¿adnego zamówienia w 1997 roku, jeœli tak to poka¿ ich
dane adresowe

USE Northwind

SELECT CustomerID, CompanyName, Address FROM Customers


WHERE CustomerID NOT IN

(SELECT DISTINCT Orders.CustomerID FROM Orders WHERE YEAR(OrderDate)=1997)

13. Podaj produkty kupowane przez wiêcej ni¿ jednego klienta

USE Northwind

SELECT ProductID, count(CustomerID) as ilosc_klientow FROM [order details]

INNER JOIN Orders ON Orders.OrderID=[order details].OrderID

GROUP BY ProductID

HAVING count(CustomerID)>1

ORDER BY 2