Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Новости сайта "Упражнения по SQL" (http://www.sql-ex.ru)


Информационный Канал Subscribe.Ru

Новости сайта "Упражнения по SQL (http://www.sql-ex.ru)" Выпуск 21 (5 февраля 2005 г.)

http://www.sql-ex.ru

Новым посетителям сайта

Сайт посвящен изучению языка, с помощью которого осуществляется взаимодействие с реляционными (и не только) СУБД. Суть обучения состоит в выполнении заданий на написание запросов к учебным базам данных; при этом система контролирует правильность выполнения заданий. В настоящее время реализованы все операторы подъязыка манипуляции данными (DML), которые включают в себя оператор извлечения данных SELECT, а также операторы модификации данных - INSERT, DELETE и UPDATE.

Мы надеемся, что справочного материала сайта окажется достаточно для самостоятельного обучения. Кроме того, свои решения вы можете обсудить на форуме сайта. Опытных же специалистов приглашаем проверить (продемонстрировать) свое мастерство и принять участие в соревновании, обеспечиваемом рейтинговой системой учета времени выполнения заданий. Фактически, рейтинг ведется на втором этапе тестирования, который начинается после решения 62-х задач первого этапа. При подсчете рейтинга каждого участника отбрасывается один самый худший показатель среди всех решенных им упражнений.

Имеется возможность получить сертификат по SQL DML при выполнении определенного количества заданий.


Новости сайта

§ По предложению Cyrilus добавлен еще один рейтинг, названный "Либеральный". Я должен извиниться перед некоторыми другими участниками наших соревнований, за то, что не упоминаю их по причине склероза. Они предлагали подобные идеи, но не были столь настойчивы :-). Суть нововведений заключается в следующем. Если на решении любой задачи второго этапа показано время свыше 6 часов, то в рейтинге оно заменяется как раз этими 6-ю часами. Естественно, что в этом случае учитывается решение всех задач, т.е. худший результат не отбрасывается. Как представляется, это "оставит в игре" тех тех участников, которые потеряли шансы на высокое место лишь из-за того, что потратили слишком много времени, например, всего на двух задачах. Обстоятельства могут быть разные, да и люди мы занятые :-). Если вас не оставил равнодушным этот рейтинг, прошу высказаться (лучше на форуме сайта). Если этот рейтинг понравится, кто знает, может он со временем заменит основной, по которому формируется TOP 10 на главной странице сайта и рейтинговая позиция участника на персональной странице.

§ Добавлены проверочные данные под 86 и 129 задачу. Прореху в проверке заметили annas и Cyrilus соответственно.

§ Блокировка неправильного решения задачи 117, опубликованного на форуме edart'ом, привела к масштабному добавлению данных в БД "Аэропорт". В результате могут оказаться ошибочными ранее принимаемые системой решения некоторых других задач, например, 106, 107 и 108. Рекомендую проверить решения этих задач.

§ Был замечен еще один баг (First_Step) в последнем обновлении сайта. После решения всех задач первого этапа тестирования в списке задач не появлялась первая задача второго этапа (61). Баг исправлен.

§ Были зафиксированы попытки подобрать пороли лидеров рейтинга, чтобы получить доступ к их решениям. Для защиты системы был добавлен атрибут nickname (псевдоним), который по обновлению сайта пока совпадает с логином. Чтобы не менять привычные имена, убедительно просим вас изменить логин, под которым вы входите в систему. Сделать это нужно на странице "Личные данные". Там же измените пароль, если он менее 6 символов. Обязательным требованием также является несовпадение псевдонима, логина и пароля. Если это не будет сделано, спустя какое-то время мы вынуждены будем сами внести подобные изменения. Тогда те, кто не поменял логин самостоятельно по причине долгого отсутствия на сайте, смогут получить эту информацию почтой, воспользовавшись ссылкой "напомнить пароль".

Число участников рейтинга - 2620

Число участников второго этапа - 239

Лучшие результаты (ТОР 20)

No Person Number of
Sel_ex
Last_Sel Number of
DML_ex
Scores Days Days_2 LastSolved LastVisit
1 Зверев Д.Л. (dimzv) 76 136 19 198 450 2.291 27 Jan 2005 28 Jan 2005
2 Кувалкин К.С. (Cyrilus) 76 136 19 198 72 4.861 04 Feb 2005 05 Feb 2005
3 Сныткин В.Л. (Ded I) 76 136 19 198 142 7.398 22 Jan 2005 05 Feb 2005
4 Валуев Д.И. (Fiolent) 76 136 19 198 503 19.337 19 Jan 2005 05 Feb 2005
5 Hakobyan H.H. (hamlet) 76 136 19 198 114 33.952 21 Jan 2005 29 Jan 2005
6 Мельникова И.А. (Iris_m) 76 136 19 198 254 66.765 21 Jan 2005 03 Feb 2005
7 Spirin (spirin) 75 136 19 195 158 13.467 21 Jan 2005 24 Jan 2005
8 Иткин И.Л. (joseph_itkin) 75 136 18 193 340 2.809 31 Jan 2005 31 Jan 2005
9 Леденев С.А. (Shurgenz) 73 136 19 193 146 8.298 11 Jan 2005 11 Jan 2005
10 Михайлов В.Г. (mslava) 73 136 17 189 498 9.731 26 Oct 2004 26 Oct 2004
11 Шипунов И. (IAS) 64 125 19 175 226 68.035 25 Jan 2005 04 Feb 2005
12 Пятница О.А. (Robin) 65 128 17 174 606 70.821 22 Oct 2004 12 Dec 2004
13 Якутин Н.В. (ZrenBy) 73 136 6 169 511 3.991 14 Sep 2004 18 Jan 2005
14 Рассказов А. (ra) 61 121 19 168 70 29.764 28 Jan 2005 30 Jan 2005
15 Галиаскаров Э.Г. (edart) 61 121 19 168 74 34.080 04 Feb 2005 04 Feb 2005
16 Губарь Д.К. (DEathkNIghtS) 61 124 17 166 23 1.046 03 Nov 2004 03 Nov 2004
17 Смирнов А. (Leshich) 61 124 17 166 205 84.171 30 Sep 2004 19 Nov 2004
18 Gershovich (VIG) 58 121 17 159 629 6.899 30 Nov 2004 04 Feb 2005
19 Булаев В.В. (Kvix) 58 121 17 159 124 24.267 27 Dec 2004 06 Jan 2005
20 Забара М.С. (максим111) 58 121 17 159 122 67.157 30 Dec 2004 14 Jan 2005

Лучшие результаты за неделю

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1 Серегин Д.В. (seregindv) 37 37 64 9 73 486 03 Feb 2005
2 Revutsky N. (imp) 39 39 66 4 70 473 01 Feb 2005
3 >Заяц М.Г. (Lepra) 30 45 55 9 64 437 05 Feb 2005
4 Workman (Workman) 36 36 64 0 64 488 04 Feb 2005
5 Гладков В.П. (gvp) 32 32 55 9 64 586 04 Feb 2005
6 Мудрый С. (isnull) 29 46 55 0 55 403 03 Feb 2005
7 Довжик А.А. (Kain) 32 32 54 0 54 595 04 Feb 2005
8 Tkachenko R.V. (Tkachenko_Roman) 29 29 53 0 53 600 31 Jan 2005
9 Nikolaev S.V. (snikol) 27 51 50 0 50 344 03 Feb 2005
10 Гарифуллин Д. (_Bambuk) 28 28 49 0 49 633 03 Feb 2005
11 sbil B.B. (sbil) 28 28 49 0 49 634 02 Feb 2005
12 >Ефимьев Ю.А. (__EmergencE__) 31 31 41 0 41 734 05 Feb 2005
13 miksh (miksh) 25 25 40 0 40 751 02 Feb 2005
14 Мацюк В.В. (vadix) 22 22 31 9 40 980 05 Feb 2005
15 >Матвеева (maxa) 16 28 30 9 39 612 05 Feb 2005
16 Антропова О.В. (makitra) 18 31 28 9 37 730 04 Feb 2005
17 Медников М.В. (medniy) 24 24 37 0 37 815 04 Feb 2005
18 Дианин С. (xif) 22 22 35 0 35 850 04 Feb 2005
19 Li (alavan) 18 24 31 0 31 824 04 Feb 2005
20 Зернятко А.В. (Azernot) 22 22 31 0 31 975 04 Feb 2005
21 Родичев А.А. (rodi4ev) 22 22 31 0 31 985 04 Feb 2005
22 Соколов А.М. (AnatolS) 25 25 31 0 31 992 04 Feb 2005

Характерные ошибки при решении упражнений

SELECT

Задача 16
Найдите пары моделей PC, имеющих одинаковые скорость и RAM. В результате каждая пара указывается только один раз, т.е. (i,j), но не (j,i), Порядок вывода: модель с большим номером, модель с меньшим номером, скорость и RAM.

Вот решение, которое довольно часто встречается:

SELECT MAX(model) as 'model', MIN(model) as 'model', speed, ram
FROM PC
GROUP BY speed, ram
HAVING MAX(model) > MIN(model)

Уж не знаю, по какой причине решают выводить только максимальную и минимальную модель для каждого совпадающей пары значений {speed, ram}. Возможно, в заблуждение вводит результат "правильного" запроса на основной базе.

В этой задаче требуется упорядочить все модели, а не только максимальную и минимальную. Экстремальные характеристики упомянуты для однозначности, т.е. чтобы выводить пару моделей один раз, например:

1122    1121

но не

1121    1122

Т.е. если, скажем, три модели - 1122, 1121, 1135 имеют одинаковые характеристики, то вывод должен быть таким:

1135     1122
1135     1121
1122     1121 Задача 39
Найдите корабли, "сохранившиеся для будущих сражений"; т.е. выведенные из строя в одной битве (damaged), они участвовали в другой.

Вот пример неправильно понятого условия:

SELECT DISTINCT ship FROM Outcomes os
    WHERE EXISTS(
        SELECT ship FROM Outcomes oa
        (WHERE oa.ship=os.ship AND result='damaged'
    )
    AND EXISTS(
        SELECT SHIP
         FROM Outcomes ou
        WHERE ou.ship=os.ship
    GROUP BY ship
        HAVING COUNT(battle)>1
    )

Это решение исполнено в стиле реляционного исчисления, а именно, разыскиваются такие корабли в таблице Outcomes, которые были повреждены (первый EXISTS) и которые участвовали более чем в одной битве (второй EXISTS).

Ошибка же состоит в том, что проигнорировано условие "сохранившиеся для будущих сражений", которое означает, что после битвы, в которой корабль получил повреждение, он принимал участие в БОЛЕЕ ПОЗДНЕМ сражении. Таким образом, для получения правильного решения этой задачи нужно анализировать даты сражений, которые содержатся в таблице сражений Battles.

§ Приведенные здесь примеры можно выполнить непосредственно на сайте, установив флажок "Без проверки" на странице с упражнениями на SELECT.

Полезная информация

§ Ошибки и заплатки
SQL Server 2000
891311 FIX: You cannot create new TCP/IP socket based connections after error messages 17882 and 10055 are written to the Microsoft SQL Server 2000 error log

Контакты

По всем вопросам, связанным с функционированием сайта, проблемами при решении упражнений, идеями вы можете обращаться к Сергею И.Моисеенко msi77@yandex.ru. Вы также можете предложить свои задачи для публикации на сайте.

Подписка Subscribe.Ru
Новости сайта "Упражнения по SQL"

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.db.sqlex
Отписаться

В избранное