loading..
Русский    English
13:53
листать

Упражнение (-2) стр. 4

Решение 3.6.4.

Использование предложения HAVING.

Консоль
Выполнить
  1. SELECT country, QTY, MIN(launched)
  2. FROM (SELECT country, launched, COUNT(name) QTY
  3. FROM Classes c JOIN
  4. Ships s ON c.class = s.class
  5. GROUP BY country,launched
  6. HAVING COUNT(name) = (SELECT MAX(qty)
  7. FROM (SELECT country,launched,COUNT(name) qty
  8. FROM Classes c1 JOIN
  9. Ships s1 ON c1.class = s1.class
  10. WHERE country = c.country
  11. GROUP BY country,launched
  12. )e
  13. )
  14. )T
  15. GROUP BY t.qty, t.country;

В подзапросе предложения FROM сначала определяются строки {страна, год, число кораблей}. Затем в предикате предложения HAVING отбираются только те строки, у которых число кораблей совпадает с максимальным числом кораблей данной страны. Обратите внимание на то, что подзапрос в этом предикате является коррелирующим:

  1. WHERE country = c.country

Именно поэтому MAX(qty) относится именно к стране из основного запроса, а не представляет собой глобальный максимум, что было бы в противном случае. Наконец, находится минимальный год для каждого сочетания {страна, максимальное число кораблей}.

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

Не получается? Тогда загляните в ПиР.

Решить задачу на 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 INNER JOIN insert INTERSECT IS NOT NULL IS NULL ISNULL laptop LEFT LEFT OUTER JOIN LEN maker MAX Больше тэгов
Учебник обновлялся
несколько дней назад
©SQL-EX,2008 [Развитие] [Связь] [О проекте] [Ссылки] [Team]
Перепечатка материалов сайта возможна только с разрешения автора.
Rambler's Top100