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

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


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

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

http://www.sql-ex.ru

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

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

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

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


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

§ Уже вторая представительница прекрасного пола получила наш сертификат. На этот раз сертификат AR.

§ На форуме сайта появилось объявление работодателя, которое может заинтересовать жителей Москвы. Вот ссылка на топик http://www.sql-ex.ru/forum/forum.php?F=0&N=0&p=24. Чтобы читать форум, требуется регистрация.

§ Число подписчиков - 1989

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

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

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

No Person Number of
Sel_ex
Last_Sel Number of
DML_ex
Scores Days Days_2 LastSolved LastVisit
1 Колосов А.С. (KAS) 137 137 20 311 25 3.441 11 Mar 2005 09 Apr 2005
2 Кувалкин К.С. (Cyrilus) 137 137 20 311 102 4.896 06 Mar 2005 09 Apr 2005
3 Валуев Д.И. (Fiolent) 137 137 20 311 581 28.554 07 Apr 2005 08 Apr 2005
4 Галиаскаров Э.Г. (Galogen) 137 137 20 311 137 63.128 08 Apr 2005 08 Apr 2005
5 Мельникова И.А. (Iris_m) 137 137 20 311 324 89.881 01 Apr 2005 08 Apr 2005
6 Зверев Д.Л. (dimzv) 136 136 20 307 513 2.428 31 Mar 2005 31 Mar 2005
7 Сныткин В.Л. (Ded I) 136 136 20 307 202 7.445 23 Mar 2005 08 Apr 2005
8 Hakobyan H.H. (hamlet) 136 136 20 307 161 37.812 09 Mar 2005 29 Mar 2005
9 Шипунов И. (IAS) 136 136 20 307 265 82.049 05 Mar 2005 31 Mar 2005
10 Иткин И.Л. (joseph_itkin) 135 136 20 304 375 2.853 07 Mar 2005 23 Mar 2005
11 Рахманов И.Е. (bloom) 134 134 20 303 114 13.579 07 Apr 2005 09 Apr 2005
12 Spirin (spirin) 134 136 19 301 158 13.467 21 Jan 2005 24 Jan 2005
13 Леденев С.А. (Shurgenz) 132 136 19 299 146 8.298 11 Jan 2005 25 Mar 2005
14 Михайлов В.Г. (mslava) 135 136 17 298 648 10.512 25 Mar 2005 25 Mar 2005
15 Пятница О.А. (Robin) 128 128 20 292 754 74.640 19 Mar 2005 20 Mar 2005
16 Gershovich (VIG) 121 121 20 277 732 8.218 13 Mar 2005 08 Apr 2005
17 Якутин Н.В. (ZrenBy) 132 136 6 275 511 3.991 14 Sep 2004 18 Jan 2005
18 Тортумашев Е.А. (Johnny) 120 120 20 274 167 17.343 28 Mar 2005 05 Apr 2005
19 Рассказов А. (ra) 120 121 19 274 70 29.764 28 Jan 2005 25 Feb 2005
20 Губарь Д.К. (DEathkNIghtS) 120 124 17 272 23 1.046 03 Nov 2004

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

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1 >Дейлов Р.А. (RaDer) 53 71 110 32 142 123 09 Apr 2005
2 Томашпольский Д.Ф. (Лед) 34 59 66 27 93 273 09 Apr 2005
3 Олейник Ю. (Юля) 25 60 45 27 72 247 08 Apr 2005
4 Ерофеев Е.Ф. (Zhekaus) 29 55 52 11 63 355 09 Apr 2005
5 tel (tel) 31 47 60 0 60 462 07 Apr 2005
6 Кременецкий (Yuriy) 37 37 54 0 54 704 08 Apr 2005
7 X (Слезы неба) 29 52 53 0 53 403 09 Apr 2005
8 >Воронков М.С. (pixx) 28 44 49 3 52 538 09 Apr 2005
9 Ponomarenko I. (Ghost_I) 9 59 21 29 50 310 08 Apr 2005
10 Косимов Р.В. (RavshanK) 28 28 49 0 49 757 05 Apr 2005
11 Горбенко А.А. (Gorbenko) 28 28 49 0 49 759 07 Apr 2005
12 Меньшиков С.И. (Menya) 28 28 49 0 49 765 08 Apr 2005
13 >Михалев А.Н. (Mihl) 29 29 48 1 49 800 09 Apr 2005
14 зачем (Митяй) 27 27 46 0 46 821 05 Apr 2005
15 Пономаренко Д. (dmitry1) 34 34 46 0 46 822 06 Apr 2005
16 Gontovoy (noname) 17 118 42 0 42 31 08 Apr 2005
17 Petrova (Galka) 25 25 40 0 40 904 06 Apr 2005
18 Voloshunets A. (haichishka) 24 24 38 0 38 932 06 Apr 2005
19 Art К.В. (kvinto) 32 32 38 0 38 933 08 Apr 2005
20 Кулицкий Д.С. (StrayCat) 15 113 35 0 35 37 08 Apr 2005
21 LOMI (Kakha) 23 23 34 0 34 1015 04 Apr 2005

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

SELECT

Задача 54
С точностью до 2-х десятичных знаков определите среднее число орудий всех линейных кораблей (учесть корабли из таблицы Outcomes).

С округлением, как правило, проблем уже не возникает. Однако регулярно допускается одна и та же ошибка. Вот запрос, который ее содержит:

SELECT CAST(AVG(numGuns*1.0) AS NUMERIC(10,2)) FROM
   (
    SELECT numguns
    FROM [Classes] c JOIN Ships s ON c.class=s.class
    WHERE type='bb'
    UNION ALL
    SELECT numguns
    FROM [Classes] c JOIN Outcomes o ON c.class=o.ship
    WHERE type='bb' and o.ship NOT IN(SELECT name FROM Ships)
) t

В подзапросе объединяются (UNION ALL) два запроса. Первый определяет число орудий для кораблей в таблице Ships, принадлежащих классам линейных кораблей (тип 'bb'). Второй учитывает головные корабли соответствующих классов при условии, что их нет в таблице Ships.

Тем самым, сделана попытка учесть каждый корабль в БД только один раз. Поскольку для объединения используется UNION ALL, то дубликаты устраняться не будут. Это важно, т.к. многие корабли будут иметь одинаковое число орудий, а в предложении SELECT подзапроса выводится только этот столбец.

И все же ошибку дает именно UNION ALL. Поступим формально, т.е. не будем домысливать предметную область, а обратимся к схеме. В таблице Ships первичным ключом является имя корабля, поэтому первый запрос в объединении даст нам по одной строке на каждый корабль известного класса. В таблице же Outcomes ключом является пара {ship, battle}, т.е. уникальность обеспечивается для комбинации имени корабля и сражения, в котором он принимал участие. Отсюда следует, что один и тот же корабль может несколько раз упоминаться в таблице Outcomes, если он принимал участие в нескольких сражениях.

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

С другой стороны, и UNION вместо UNION ALL мы написать не можем по указанной выше причине.

Вывод. Недостаточно выполнять объединение по одному столбцу numguns. Кажется, все сказал :-).

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

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

§ Мы выставили наш сайт на конкурс Интернить 2005. Победитель определяется числом поданых голосов. Просьба проголосовать. (рекомендуемая оценка 3 :-)).

Контакты

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

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

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

В избранное