Předělání SQL dotazu
Napsal: 28 říj 2013 15:00
Ahoj,
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.
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;