měl jsem za úkol vymyslet několik netriviálních dotazů na databázi Northwind a ty pak zapsat dvěma různými způsoby. Ideálně využitím vnořených selectů, které ovšem i přes veškerou snahu stále absolutně nezvládám. Nenašel by se tady někdo, kdo by zvládl následující dotazy předělat pomocí vnořených selectů tak, aby mi vracely stejný výsledek? Předem děkuji.
Kód: Vybrat vše
--1. Vypište jména společností z Německa nebo Brazílie, které učinily nejméně 10 objednávek, a počet těchto objednávek. Seřaďte vzestupně.
SELECT CompanyName AS 'Jméno společnosti', COUNT(Orders.OrderID) AS 'Počet objednávek'
FROM Customers LEFT OUTER JOIN Orders ON Customers.CustomerID = Orders.CustomerID
WHERE Country LIKE 'Germany' OR Country LIKE 'Brazil'
GROUP BY CompanyName HAVING COUNT(Orders.OrderID) >= 10
ORDER BY 'Počet objednávek' ASC;
--2. Vypište příjem z 20 nejvýnosnějších objednávek po aplikaci slevy, ID těchto objednávek a ID, jméno a příjmení zaměstnanců, kteří danou objednávku zpracovali. Setřiďte sestupně dle příjmu. Příjem zaokrouhlete na 1 desetinné místo.
SELECT TOP 20 [Order Details].OrderID AS 'ID objednávky', Orders.EmployeeID AS 'ID zaměstnance', Employees.FirstName AS 'Jméno', Employees.LastName AS 'Příjmení', ROUND(SUM([Order Details].UnitPrice * [Order Details].Quantity - ([Order Details].Quantity * [Order Details].UnitPrice * [Order Details].Discount)), 1) AS 'Příjem'
FROM [Order Details] LEFT OUTER JOIN Orders ON [Order Details].OrderID = Orders.OrderID LEFT OUTER JOIN Employees ON Employees.EmployeeID = Orders.EmployeeID
GROUP BY [Order Details].OrderID, Orders.EmployeeID, Employees.FirstName, Employees.LastName
ORDER BY 'Příjem' DESC;