1. Wyświetl wszystkie produkty kategorii „Beverages” (napoje) select ProductName, CategoryName from Products natural join Categories where CategoryName = 'Beverages'; select ProductName, CategoryName from Products join Categories using (CategoryId) where CategoryName = 'Beverages'; select ProductName, CategoryName from Products join Categories on (Products.CategoryID = Categories.CategoryID ) where CategoryName = 'Beverages'; 2. Wyświetl dane pracowników w formacie pierwsza litera imienia, podkreślenie, nazwisko, np: j_nowak select concat(substr(FirstName,-1,1),'_', LastName) from Employees; 3. Wszystkie firmy zamawiające tofu select Distinct(CompanyName) from Customers natural join Orders as o join `Order Details` as od on (od.OrderID=o.OrderID) join Products using (ProductID) where ProductName='Tofu'; 4. Data najstarszego zamówienia i nazwisko pracownika, który był za nie odpowiedzialny select OrderDate,LastName from Employees natural join Orders where OrderDate = (Select min(OrderDate) from Orders); 5. Nazwisko i data urodzenia pracowników starszych niż średnia data urodzenia pracownika select LastName,BirthDate from Employees where BirthDate < (select avg(BirthDate) from Employees); 6. Data zamówień złożonych co najmniej 3 lata po zatrudnieniu ostatniego pracownika select OrderDate from Orders where OrderDate > adddate((select max(HireDate) from Employees), interval 3 year); 7. Wybierz przed-najkrótsze (drugie w kolejności, jeśli chodzi o długość) nazwiska pracowników, nie używając klauzury LIMIT. select LastName from Employees where length(LastName) = (select min(length(LastName)) from Employees where length(LastName)> (select min(length(LastName)) from Employees )); 8. Imiona i nazwiska pracowników, którzy mają podwładnych (czyli kogokolwiek, kto im składa raporty, kolumna ReportsTo) select FirstName, LastName from Employees where EmployeeID in (select ReportsTo from Employees); 9. Podaj w jednej kolumnie nazwę produktu, przecinek i spacja liczba zamówionych sztuk, np. „Tofu, 240” select concat(ProductName, ', ', suma) from ( select ProductName, sum(Quantity) as suma from Products natural join `Order Details` group by ProductName) as tab_wirt; 10. Wyświetl region, z którego pochodzi najwięcej produktów. Należy pominąć nieokreślone regiony. select Region,count(*) from Products natural join Suppliers where not isnull(Region) group by Region having count(*) = ( select max(liczba) from (select count(*) as liczba from Products natural join Suppliers where not isnull(Region) group by Region) AS TAB_Wirtualna ); 11. Daty zamówień i nazwy miast wysyłki złożone do miast, w których działają pracownicy, niekoniecznie do swoich miast (użycie kolumny Employees.City). select OrderDate,ShipCity from Orders where ShipCity in (select City from Employees); 12. Niepowtarzające się nazwy miast wysyłki zamówień, w których NIE działają pracownicy (użycie kolumny Employees.City). select distinct (ShipCity) from Orders where ShipCity not in (select City from Employees); 13. Niepowtarzające się nazwy miast, do których kierowane są zamówienia, wraz z liczbą tych zamówień, przy czym brane są uwagę jedynie miasta, w których nie pracują pracownicy (kolumna Employees.City), a liczba zamówień jest większa od 9. Wyniki mają być wyświetlone od miasta z największą liczbą zamówień, do miasta z najmniejszą liczbą zamówień. select ShipCity, count(*) from Orders where ShipCity not in (select City from Employees) group by ShipCity having count(*)>=10 order by count(*) desc;