Главная страница

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


Скачать 13.35 Kb.
НазваниеДобрый вечер, отличная работа ! Разберем подробно
Дата11.04.2023
Размер13.35 Kb.
Формат файлаdocx
Имя файлаДЗ 4.docx
ТипДокументы
#1053892

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

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

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'


написать администратору сайта