ДЗ 4. Добрый вечер, отличная работа ! Разберем подробно
Скачать 13.35 Kb.
|
Добрый вечер, отличная работа ! Разберем подробно 1) Признак того, что сотрудник работал в более чем одном отделе является то, что по нему более чем одна запись в версионной таблице. Ваш вариант решения тоже является абсолютно верным, но всегда надо иметь в голове несколько вариантов, потому предлагаю дополнительно ознакомится с моим: SELECT * FROM HumanResources.EmployeeDepartmentHistory WHERE BusinessEntityID IN ( SELECT BusinessEntityID FROM HumanResources.EmployeeDepartmentHistory GROUP BY BusinessEntityID HAVING COUNT(BusinessEntityID) > 1 ) 2) Замечательно. Достаточно было варианта ниже, хотя ваш вариант тоже верный : SELECT * FROM HumanResources.EmployeeDepartmentHistory WHERE BusinessEntityID IN ( SELECT BusinessEntityID FROM HumanResources.Employee e WHERE Gender = 'F' AND DATEADD(YEAR, 30, BirthDate) < GETDATE() ) 3) Все абсолютно верно. 4) Отличная работа, вариантов как вы понимаете много, текущая версия отличная. Для ознакомления через коррелирующий: SELECT soh.TerritoryID ,soh.SalesOrderID ,soh.TotalDue * 60.0 as TotalDue -- RUB ,soh.TotalDue/( SELECT SUM(soh1.TotalDue) FROM Sales.SalesOrderHeader soh1 WHERE soh1.TerritoryID = soh.TerritoryID AND soh1.OrderDate BETWEEN '20070101' AND '20071231' ) as '/' FROM Sales.SalesOrderHeader soh WHERE soh.OrderDate BETWEEN '20070101' AND '20071231' Добрый вечер, отличная работа ! Разберем подробно 1) Великолепно 2) Отлично, даже 2 варианта, супер. Было бы еще лучше, если бы вы считали возраст динамически, в зависимости от текущей даты. Ожидаемый запрос ниже: SELECT * FROM HumanResources.EmployeeDepartmentHistory WHERE BusinessEntityID IN ( SELECT BusinessEntityID FROM HumanResources.Employee e WHERE Gender = 'F' AND DATEADD(YEAR, 30, BirthDate) < GETDATE() 3) Великолепно 4) Отличная работа, вариантов как вы понимаете много, текущая версия отличная. Для ознакомления через коррелирующий: SELECT soh.TerritoryID ,soh.SalesOrderID ,soh.TotalDue * 60.0 as TotalDue -- RUB ,soh.TotalDue/( SELECT SUM(soh1.TotalDue) FROM Sales.SalesOrderHeader soh1 WHERE soh1.TerritoryID = soh.TerritoryID AND soh1.OrderDate BETWEEN '20070101' AND '20071231' ) as '/' FROM Sales.SalesOrderHeader soh WHERE soh.OrderDate BETWEEN '20070101' AND '20071231' |