loading..
Русский    English
17:45
листать

Упражнение 70 стр. 2

Решение 3.7.2

Консоль
Выполнить
  1. SELECT bat
  2. FROM (SELECT DISTINCT d.battle AS bat, a.country, COUNT(d.ship) AS s
  3.       FROM Outcomes d, Ships b, Classes a
  4.       WHERE d.ship = b.name AND
  5.             b.class=a.class
  6.       GROUP BY d.battle, a.country
  7.       UNION
  8.       SELECT DISTINCT d.battle AS bat, a.country, COUNT(d.ship) AS s
  9.       FROM Outcomes d, Classes a
  10.       WHERE d.ship = a.class AND
  11.             d.ship NOT IN (SELECT name
  12.                            FROM Ships
  13.                            )
  14.       GROUP BY d.battle, a.country
  15.       ) AS t1
  16. WHERE s > 2;

Ошибка, характерная для начинающих, состоит в том, что сначала выполняется группировка, а потом объединение. И хотя здесь отсутствует ошибка решения 3.7.1 (во втором запросе объединения учтены головные корабли, которых нет в Ships), решение не даст нам страну, у которой в сражении участвовало 3 корабля, два из которых присутствуют в таблице Ships, а один (головной) — только в таблице Outcomes.

Одно время на сайте системой проверки принималось заведомо неправильное решение:


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 Больше тэгов
Учебник обновлялся
месяц назад
©SQL-EX,2008 [Развитие] [Связь] [О проекте] [Ссылки] [Team]
Перепечатка материалов сайта возможна только с разрешения автора.
Rambler's Top100