Kategoria: T-SQL

Zadanie 9.

Oblicz wiek pracowników, wynik posortuj według wieku malejąco.

Baza: Northwind, Tabela: dbo.Employees, Kolumny: FirstName, LastName, BirthDate, Wynik: 9 rows

13

Rozwiązanie

SELECT FirstName, LastName, DATEDIFF(year, BirthDate, CURRENT_TIMESTAMP) as Wiek
FROM dbo.Employees
ORDER BY Wiek DESC;

Można również użyć funkcji GETDATE() zamiast CURRENT_TIMESTAMP

[collapse]

Zadanie 7.

Pokaż wszystkich pracowników zatrudnionych w 1993 roku.

Baza: Northwind, Tabela: dbo.Employees, Kolumny: FirstName, LastName, HireDate, Wynik: 3 rows

11

Rozwiązanie

SELECT FirstName, LastName, HireDate
FROM dbo.Employees
WHERE YEAR(HireDate) = '1993'

— inna wersja: WHERE HireDate >= ‘19930101’ AND HireDate < ‘19940101’;

[collapse]

Zadanie 6.

Dla zamówień o numerach 10250, 10657, 10710 i 10901 policz, ile produktów zawiera każde z nich, oblicz średnią cenę produktu i podaj kraj, do którego zostało dostarczone.

Baza: Northwind, Tabela: dbo.Order Details, dbo.Orders, Kolumny:  OrderID, UnitPrice, Quantity, ShipCountry, Wynik: 4 rows

10

Rozwiązanie

SELECT O.OrderID, COUNT(*) as Produkty, AVG(OD.UnitPrice*OD.Quantity) as Srednia, O.ShipCountry
FROM dbo.[Order Details] as OD
JOIN dbo.Orders as O on OD.OrderID = O.OrderID
GROUP BY O.OrderID, O.ShipCountry
HAVING O.OrderID IN(10250, 10657, 10710, 10901);

[collapse]

Zadanie 5.

Policz, ile zamówień złożył każdy z klientów. Wynik ułóż od największej ilości zamówień.

Baza: Northwind, Tabele: dbo.Customers, dbo.Orders, Kolumny: CustomerID, CompanyName, OrderID, Wynik: 91 rows

8

Rozwiązanie

SELECT C.CustomerID, C.CompanyName, COUNT(O.OrderID) as Zamowienia
FROM dbo.Customers as C
LEFT JOIN dbo.Orders as O on C.CustomerID = O.CustomerID
GROUP BY C.CustomerID, C.CompanyName
ORDER BY Zamowienia DESC

— W funkcji COUNT() wstawiłam zliczanie po OrderID zamiast *, ponieważ * zlicza wszystkie wiersze, również z wartością NULL gdyby się jakieś pojawiły – a teoretycznie mogą, bo mamy złączenie lewostronne – więc wynik mógłby być przekłamany.

[collapse]

Zadanie 3.

Znajdź pracowników zatrudnionych między październikiem 1993 a marcem 1994. Wynik posortuj według daty zatrudnienia.

Baza: Northwind, Tabele: dbo.Employees, Kolumny: FirstName, LastName, HireDate, Wynik: 4 rows

7

Rozwiązanie

SELECT FirstName, LastName, HireDate
FROM dbo.Employees
WHERE HireDate >= '19931001' AND HireDate < '19940401'
ORDER BY HireDate;

[collapse]

Zadanie 4.

Wybierz te zamówienia, w których ilość zamówionych produktów wynosi 5 lub więcej.

Baza: Northwind, Tabela: dbo.Order Details, Kolumny: OrderID, Wynik: 37 rows

6

Rozwiązanie

SELECT OrderID, COUNT(*) as Ilosc
FROM dbo.[Order Details]
GROUP BY OrderID
HAVING COUNT(*) >= 5
ORDER BY Ilosc DESC;

[collapse]
« Starsze wpsiy Recent Entries »