Файл: Добрый вечер, отличная работа ! Разберем подробно.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 11.01.2024

Просмотров: 13

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Добрый вечер, отличная работа !

Разберем подробно

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'