лекция. Учебник по sql если вы хотите узнать, что такое sql этот сайт для вас
Скачать 7.88 Mb.
|
39 П3 3 Найдите корабли, «сохранившиеся для будущих сражений»; то есть выведенные из строя в одной битве (damaged), они участвовали в другой Обуч. + 46 П3 3 Укажите названия, водоизмещение и число орудий кораблей, участвовавших в сражении при Гвадалканале (Guadalcanal) Обуч. + № База Уровень Задача Этап ПиР 51 П3 3 Найдите названия кораблей, имеющих наибольшее число орудий среди всех кораблей такого же водоизмещения (учесть корабли из таблицы Outcomes) Обуч. + 53 П3 1 Определите среднее число орудий для классов линейных кораблей. Получить результат с точностью до двух десятичных знаков Обуч. + 54 П3 2 С точностью до двух десятичных знаков определите среднее число орудий всех линейных кораблей (учесть корабли из таблицы Outcomes) Обуч. + 55 П3 1 Для каждого класса определите год, когда был спущен на воду первый корабль этого класса. Если год спуска на воду головного корабля неизвестен, определите минимальный год спуска на воду кораблей этого класса. Вывести: класс, год Обуч. + 56 П3 3 Для каждого класса определите число кораблей этого класса, потопленных в сражении. Вывести: класс и число потопленных кораблей Обуч. + 57 П3 3 Для классов, имеющих потери в виде потопленных кораблей и не менее трех кораблей в базе данных, вывести имя класса и число потопленных кораблей Обуч. + 70 П3 3 Укажите сражения, в которых участвовало, по меньшей мере, три корабля одной и той же страны. Обуч. + 77 П4 2 Определить дни, когда было выполнено максимальное число рейсов из Ростова ('Rostov'). Вывод: число рейсов, дата. Обуч. - 93 П4 2 Для каждой компании, перевозившей пассажиров, подсчитать время, которое провели в полете самолеты с пассажирами. Вывод: название компании, время в минутах. Обуч. - 11 П4 2 Среди пассажиров, которые пользовались услугами не менее двух авиакомпаний, найти тех, кто совершил одинаковое количество полётов самолетами каждой из этих авиакомпаний. Вывести имена таких пассажиров. Рейтинг - (- 2) П3 2 Для каждой страны определить год, когда на воду было Рейтинг + спущено максимальное количество ее кораблей. В случае, если окажется несколько таких лет, взять минимальный из них. Вывод: страна, количество кораблей, год 17 П3 1 Найдите названия всех тех кораблей из базы данных, о которых можно определенно сказать, что они были спущены на воду до 1941 г. Рейтинг + Приложение 3. Хроники Торуса На сайте sql-ex.ru предлагается несколько задач, связанных с мифической планетой Торус. В рамках этого приложения дается введение в топологию планеты и объясняются необходимые термины. Тор – это геометрическая фигура, представляющая собой поверхность вращения в форме бублика (см. http://en.wikipedia.org/wiki/Torus ). К сожалению, из-за прекращения поддержки Adobe Flash player наша чудная мультимедиа-презентация (навигатор по Торусу) больше не поможет вам точнее понять взаимное расположение стран TIJ, чтобы успешнее решать соответствущие задачи на sql- ex.ru . :-) Кнопки клавиатуры (qwe, asd, ->, <-) служили для организации вращения тора, а кнопки со стрелками вверх и вниз использовались для зуммирования. Клик на страну на торе вызывал перерисовку прямоугольной карты Меркадота. Планета Торус Планета Торус имеет тороидальную поверхность. Если эту поверхность развернуть (спроецировать) на плоскость в координатах Меркадота, то страны на этой карте будут выглядеть как ячейки "таблицы" с числом столбцов равным 7. Согласно 28-ричной системе исчисления, принятой на планете, страны именуются следующим образом: T00 T01 … T06 T10 T11 … T16 … TA0 TA1 … TA6 … TR0 TR1 … TR6 Меркадот – знаменитый путешественник и картограф, живший в стране T00 и разработавший карты планеты, наименее искажающие углы и расстояния. Все страны на Торусе примерно равноправны с точки зрения топологии, поэтому Меркадот разработал единую систему карт для планеты Торус. В этой системе схема карты для страны TR6, например, выглядит следующим образом: TR6 TR0 … TR5 T06 T00 … T05 … TQ6 TQ0 … TQ5 В силу особенностей тороидальной поверхности оказывается, что страна T00, как и всякая другая страна на планете, граничит с 8-ю другими странами, а вовсе не с тремя. На Торусе для обозначения соседних стран используются единообразные аббревиатуры. Так, например, в стране T00 о стране TR0 всегда говорили как о северном (NN) соседе, о TR6 как о северо-западном (NW) соседе и так далее (следуя против хода часовой стрелки). Подобным образом (NN, NW, WW, SW, SS, SE, EE, NE) обозначают своих соседей и другие страны. Возможно, это связано с направлением магнитных полей планеты. В результате развития цивилизации в торусианской галактике было обнаружено немало тороидальных планет, названия которых имеют следующие обозначения в астрономическом каталоге: Torus MxN, M - число областей по вертикали (широте), а N - число областей по горизонтали (долготе), т.е. общее число областей на такой планете равно MxN. При этом области не всегда представляют собой страны, как это имеет место на планете Торус, которая в данной классификации обозначается как Torus 28x7. До последнего времени самой большой (по числу областей) из обнаруженных планет являлся Torus 36x36. Для описания ее топологии торусианцы придумали 36-ричную математическую систему исчисления BASE 36 Согласно этой системе, области на Торус 36x36 имеют аббревиатуры от T00 до TZZ. С тех пор как среди участников соревнований на сайте sql-ex.ru появились торусианцы, стала доступной новая информация об их галактике Лорус (Lorus). Например, оказалось, что Torus 36x36 - не самая большая планета этой системы. В целях культурного обмена, немало фактологических данных из исторических хроник Torus было занесено в основные и проверочные базы сайта ( Painting, Ships и прочих ). Из условий задач на sql-ex становится известным, что единицей длины на Торусе является торометр, а единой валютой – торобакс. Основой жизни там является вода и ее разновидность – лед. В условиях задач приводятся основные сведения о физико-химических характеристиках, экономических и политических системах планет Torus MxN. Рассмотрим задачу про Торус, в которой мы вообще не будем привязываться ни к одной из “обычных” баз, и предложим следующее “универсальное” условие. Соседние страны на Торусе 3x7 Для каждой из стран планеты Торус 3x7: T00 T01 … T06 T10 T11 … T16 T20 T21 … T26 найти список всех соседних стран, с которыми она имеет границу ненулевой длины. Решение привести в виде таблицы из пяти колонок: [State] [NN] [WW] [SS] [EE]. Подсказка. Вот как выглядит ответ для обычного (нетороидального) случая. State NN WW SS EE T00 NULL NULL T10 T01 T01 NULL T00 T11 T02 T02 NULL T01 T12 T03 T03 NULL T02 T13 T04 T04 NULL T03 T14 T05 T05 NULL T04 T15 T06 T06 NULL T05 T16 NULL T10 T00 NULL T20 T11 T11 T01 T10 T21 T12 T12 T02 T11 T22 T13 T13 T03 T12 T23 T14 T14 T04 T13 T24 T15 T15 T05 T14 T25 T16 T16 T06 T15 T26 NULL T20 T10 NULL NULL T21 T21 T11 T20 NULL T22 T22 T12 T21 NULL T23 T23 T13 T22 NULL T24 T24 T14 T23 NULL T25 T25 T15 T24 NULL T26 T26 T16 T25 NULL NULL Решение для тороидального случая. 1. SELECT 2. 'T' + CAST ( i AS varchar ) + CAST ( j AS varchar ) [ State ] 3. , 'T' + CAST ( k1 AS varchar ) + CAST ( j1 AS varchar ) [ NN ] 4. , 'T' + CAST ( i2 AS varchar ) + CAST ( k2 AS varchar ) [ WW ] 5. , 'T' + CAST ( k4 AS varchar ) + CAST ( j4 AS varchar ) [ SS ] 6. , 'T' + CAST ( i3 AS varchar ) + CAST ( k3 AS varchar ) [ EE ] 7. FROM ( SELECT j= 0 UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL 8. SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 ) J 9. CROSS JOIN ( SELECT i= 0 UNION ALL SELECT 1 UNION ALL SELECT 2 ) I 10. CROSS APPLY ( SELECT i1=i -1 ,j1=j,i2=i,j2=j - 1 ,i3=i,j3=j +1 ,i4=i +1 ,j4=j ) D 11. CROSS APPLY ( SELECT 12. k1= CASE WHEN i1< 0 THEN 2 ELSE i1 END 13. ,k2= CASE WHEN j2< 0 THEN 6 ELSE j2 END 14. ,k3= CASE WHEN j3> 6 THEN 0 ELSE j3 END 15. ,k4= CASE WHEN i4> 2 THEN 0 ELSE i4 END 16. ) E; Правильный ответ: State NN WW SS EE T00 T20 T06 T10 T01 T01 T21 T00 T11 T02 T02 T22 T01 T12 T03 T03 T23 T02 T13 T04 T04 T24 T03 T14 T05 T05 T25 T04 T15 T06 T06 T26 T05 T16 T00 T10 T00 T16 T20 T11 T11 T01 T10 T21 T12 T12 T02 T11 T22 T13 T13 T03 T12 T23 T14 T14 T04 T13 T24 T15 T15 T05 T14 T25 T16 T16 T06 T15 T26 T10 T20 T10 T26 T00 T21 T21 T11 T20 T01 T22 T22 T12 T21 T02 T23 T23 T13 T22 T03 T24 T24 T14 T23 T04 T25 T25 T15 T24 T05 T26 T26 T16 T25 T06 T20 Заключение Автор продолжает работать над книгой, добавляя новые материалы и редактируя старые. В частности, добавлены главы, посвященные языку определения данных (DDL — Data Definition Language) и новым синтаксическим конструкциям запросов, которые появились в последних версиях стандарта и поддерживаются реализациями. Планируется написать об основах нормализации таблиц и оптимизации запросов. Автор с благодарностью примет ваши конструктивные замечания и предложения, которые вы можете отправлять по адресу электронной почты s.moiseenko[@]sql-ex[DOT]ru. Список цитируемых источников 1. Дейт К.Дж. Введение в системы баз данных, 6-е издание. - К.; М.; СПб.: Издательский дом "Вильямс", 2000 2. Ульман Дж.Д., Уидом Дж. Введение в системы баз данных. - М.: Издательство "Лори", 2000 3. Muthusamy Anantha Kumar. SQL Server and Collation, 2004 4. Мартин Грабер. Справочное руководство по SQL. - М.: Издательство "Лори", 1997 5. Kalen Delaney. Inside Microsoft SQL Server 2005: The Storage Engine (Microsoft Press, 2006) ISBN 978- 0735621053 6. Codd E.F. The Relational Model for Database Management Version 2. - Reading, Mass.: Addison-Wesley, 1989 7. Джо Селко. Программирование на SQL для профессионалов. - 2-е издание - М.: Издательство "Лори", 2004 8. Itzik Ben-Gan. Inside Microsoft SQL Server 2008: T- SQL Querying: Microsoft Press, 2009 |