loading..
Русский    English
14:01
листать

Упражнение 32 стр. 4

Решение 3.14.5

Консоль
Выполнить
  1. SELECT Country, AVG(bore*bore*bore)/2
  2. FROM (SELECT c.country, bore
  3. FROM Classes C,
  4. Ships S
  5. WHERE S.class = C.Class AND
  6. NOT bore IS NULL
  7. UNION ALL
  8. SELECT country, bore
  9. FROM Classes C,
  10. OutComes O
  11. WHERE O.Ship = C.Class AND
  12. NOT EXISTS (SELECT 1
  13. FROM Ships S
  14. WHERE s.Name = O.Ship
  15. ) AND
  16. NOT bore IS NULL
  17. GROUP BY country, bore
  18. ) AS Q1
  19. GROUP BY country;

В подзапросе объединяются двухатрибутные отношения {страна, калибр}. Предикат второго запроса:

  1. NOT EXISTS (SELECT 1
  2. FROM Ships S
  3. WHERE s.Name = O.Ship
  4. )
исключает возможность неоднократного учета корабля, если он присутствует в обеих таблицах — Ships и Outcomes, — что как бы оправдывает использование для объединения оператора UNION ALL. Дубликаты же в таблице Outcomes, которые могут появиться в случае участия корабля в нескольких сражениях, устраняются, по мнению автора решения, группировкой по стране и калибру.

Однако если у страны имеется несколько классов кораблей, имеющих на вооружении орудия одинакового калибра, то возможна ситуация, когда головные корабли этих классов будут присутствовать в таблице Outcomes. В результате вместо нескольких таких кораблей учтен будет только один, что и делает данное решение ошибочным.

Решить задачу на SQL-EX.RU

Bookmark and Share
Страницы: 1 2 3 4
Тэги:
ALL AND AUTO_INCREMENT AVG battles CASE CAST CHAR CHARINDEX CHECK classes COALESCE CONSTRAINT Convert COUNT CROSS APPLY CTE DATEADD DATEDIFF DATENAME DATEPART DATETIME DDL DEFAULT DELETE DISTINCT DML EXCEPT EXISTS EXTRACT FOREIGN KEY FROM FULL JOIN GROUP BY Guadalcanal HAVING IDENTITY IN INFORMATION_SCHEMA INNER JOIN insert INTERSECT IS NOT NULL IS NULL ISNULL laptop LEFT LEFT OUTER JOIN LEN maker Больше тэгов
Учебник обновлялся
месяц назад
обмен с unistream
©SQL-EX,2008 [Развитие] [Связь] [О проекте] [Ссылки] [Team]
Перепечатка материалов сайта возможна только с разрешения автора.