Lab 3
This commit is contained in:
commit
e2a44e412e
|
@ -0,0 +1,85 @@
|
||||||
|
USE Northwind_2020;
|
||||||
|
|
||||||
|
-- 1. Podaj identyfikator najd³u¿ej realizowanego zamówienia
|
||||||
|
SELECT OrderID, datediff(DAY, OrderDate, ShippedDate) as Days
|
||||||
|
FROM Orders
|
||||||
|
ORDER BY Days DESC
|
||||||
|
|
||||||
|
SELECT OrderID, datediff(DAY, OrderDate, ShippedDate) as Days
|
||||||
|
FROM Orders
|
||||||
|
WHERE datediff(DAY, OrderDate, ShippedDate) =
|
||||||
|
(SELECT max(datediff(DAY, OrderDate, ShippedDate)) FROM Orders)
|
||||||
|
|
||||||
|
-- 2. Podaæ klientów, którzy mieli przerwê w zakupach d³u¿sz¹ ni¿ 2 miesi¹ce
|
||||||
|
SELECT OrderID, CustomerID, OrderDate, (
|
||||||
|
SELECT TOP 1 OrderDate FROM Orders
|
||||||
|
WHERE OrderID > o.OrderID AND
|
||||||
|
CustomerID = o.CustomerID
|
||||||
|
) AS NextOrderDate,
|
||||||
|
datediff(DAY, OrderDate, (
|
||||||
|
SELECT TOP 1 OrderDate FROM Orders
|
||||||
|
WHERE OrderID > o.OrderID AND
|
||||||
|
CustomerID = o.CustomerID
|
||||||
|
))
|
||||||
|
FROM Orders AS o WHERE datediff(DAY, OrderDate, (
|
||||||
|
SELECT TOP 1 OrderDate FROM Orders
|
||||||
|
WHERE OrderID > o.OrderID AND
|
||||||
|
CustomerID = o.CustomerID
|
||||||
|
)) > 62
|
||||||
|
|
||||||
|
|
||||||
|
-- 3. Wypisaæ identyfikatory tych pracowników, którzy realizowali wiêcej zamówieñ
|
||||||
|
-- ni¿ liczba zamówieñ zrealizowanych przez pracowników z tego samego kraju
|
||||||
|
-- co spedytorzy.
|
||||||
|
SELECT EmployeeID, count(OrderID) FROM Orders
|
||||||
|
GROUP BY EmployeeID
|
||||||
|
HAVING count(OrderID) >= all (
|
||||||
|
SELECT count(OrderID) FROM Orders
|
||||||
|
INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
|
||||||
|
WHERE Country = ShipCountry
|
||||||
|
GROUP BY Orders.EmployeeID
|
||||||
|
)
|
||||||
|
|
||||||
|
-- 4. W firmie u¿ywaj¹cej bazy Northwind pracownicy (tabela Employees) posiadaj¹
|
||||||
|
-- adresy emial’owe. Za³ó¿my, ¿e standardowo nazwa konta (czêœæ przed znakiem @)
|
||||||
|
-- zbudowana jest z pierwszej litery imienia (firstname), inicja³u œrodkowego
|
||||||
|
-- (pole middlinitial) oraz pierwszych oœmiu znaków nazwiska (lastname).
|
||||||
|
-- Utwórz zapytanie, które wygeneruje te nazwy email’owe. W tym zadaniu nale¿y
|
||||||
|
-- u¿yæ funkcji ³añcuchowych LOWER i SUBSTRING.
|
||||||
|
SELECT FirstName, LastName, lower(
|
||||||
|
concat(
|
||||||
|
substring(FirstName, 1, 1),
|
||||||
|
substring(LastName, 1, 8),
|
||||||
|
'@northwind.com'
|
||||||
|
)
|
||||||
|
) FROM Employees
|
||||||
|
|
||||||
|
-- 5. Podaj dzieñ w którym by³o najwiêcej zamówieñ
|
||||||
|
SELECT count(OrderID) AS HowMany, datename(weekday, OrderDate) AS WeekDay
|
||||||
|
FROM Orders
|
||||||
|
GROUP BY datename(weekday, OrderDate)
|
||||||
|
ORDER BY count(OrderID) DESC
|
||||||
|
|
||||||
|
-- 6. Wypisz nazwê i adres najczêœciej zamawiaj¹cego klienta -- broken
|
||||||
|
SELECT CompanyName, City
|
||||||
|
FROM Customers
|
||||||
|
WHERE CompanyName = (
|
||||||
|
SELECT CompanyName FROM Customers
|
||||||
|
INNER JOIN Orders ON Orders.CustomerID = Customers.CustomerID
|
||||||
|
HAVING count(OrderID) >= ALL (SELECT count(OrderID) FROM Orders GROUP BY CustomerID)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SELECT count(OrderID), Orders.CustomerID
|
||||||
|
FROM Orders
|
||||||
|
INNER JOIN Customers ON Customers.CustomerID = Orders.CustomerID
|
||||||
|
GROUP BY Orders.CustomerID
|
||||||
|
|
||||||
|
-- 7. Wskazaæ pracownika który obs³ugiwa³ klienta, którego nie obs³ugiwa³ nikt inny
|
||||||
|
|
||||||
|
|
||||||
|
-- 8. Wypisz dane pracownika którego nazwisko jest najd³u¿sze. Skorzystaj z funkcji LEN
|
||||||
|
SELECT LastName
|
||||||
|
FROM Employees
|
||||||
|
WHERE len(LastName) = (SELECT max(len(LastName)) FROM Employees)
|
Loading…
Reference in New Issue