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

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


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

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

http://www.sql-ex.ru

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

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

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

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


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

§ Где-то к следующей рассылке выставлю одну новую задачу. Вероятно, она заменит задачу 66, которая близка по решению к задаче 67. Некоторое преимущество получат те, кто уже решил задачу 67, т.к. ее решение требует меньше времени, если предварительно решить задачу 66. Однако сложность этих задач такова, что это не может иметь принципиального значения.

§ С сожалением приходится констатировать, что в список лауреатов конкурса "ИТ-образование в Рунете" мы не попали. Составить свое мнение о получивших более высокую оценку экспертов вы можете здесь: http://ict.edu.ru/konkurs/laureat.html (номинация: 5. Электронные учебники). Будем теперь ожидать результатов конкурса Интернить, голосование по которому еще продолжается. Если вы хотите выразить свое отношение к нашему сайту, проголосуйте по ссылке, находящейся внизу этого выпуска рассылки.

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

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

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

Лучшие результаты (ТОР 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 29 Apr 2005
2 Кувалкин К.С. (Cyrilus) 137 137 20 311 102 4.896 06 Mar 2005 29 Apr 2005
3 Гонтовой В.А. (noname) 137 137 20 311 40 9.666 25 Apr 2005 25 Apr 2005
4 Валуев Д.И. (Fiolent) 137 137 20 311 581 28.554 07 Apr 2005 29 Apr 2005
5 Галиаскаров Э.Г. (Galogen) 137 137 20 311 137 63.128 08 Apr 2005 26 Apr 2005
6 Мельникова И.А. (Iris_m) 137 137 20 311 324 89.881 01 Apr 2005 20 Apr 2005
7 Зверев Д.Л. (dimzv) 136 136 20 307 513 2.428 31 Mar 2005 31 Mar 2005
8 Сныткин В.Л. (Ded I) 136 136 20 307 202 7.445 23 Mar 2005 29 Apr 2005
9 >Леденев С.А. (Shurgenz) 136 111 20 307 255 8.850 30 Apr 2005 30 Apr 2005
10 Рахманов И.Е. (bloom) 136 136 20 307 118 14.144 11 Apr 2005 28 Apr 2005
11 Hakobyan H.H. (hamlet) 136 136 20 307 161 37.812 09 Mar 2005 18 Apr 2005
12 Шипунов И. (IAS) 136 136 20 307 265 82.049 05 Mar 2005 31 Mar 2005
13 Иткин И.Л. (joseph_itkin) 135 136 20 304 375 2.853 07 Mar 2005 13 Apr 2005
14 Spirin (spirin) 134 136 19 301 158 13.467 21 Jan 2005 24 Jan 2005
15 Михайлов В.Г. (mslava) 135 136 17 298 648 10.512 25 Mar 2005 25 Mar 2005
16 Пятница О.А. (Robin) 128 128 20 292 754 74.640 19 Mar 2005 10 Apr 2005
17 Gershovich (VIG) 122 122 20 280 764 10.557 14 Apr 2005 30 Apr 2005
18 Булаев В.В. (Kvix) 121 111 20 277 247 25.291 29 Apr 2005 29 Apr 2005
19 Якутин Н.В. (ZrenBy) 132 136 6 275 511 3.991 14 Sep 2004 18 Jan 2005
20 Тортумашев Е.А. (Johnny) 120 120 20 274 167 17.343 28 Mar 2005 12 Apr 2005

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

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1 Астахов А. (Glukogenerator) 59 59 106 32 138 269 29 Apr 2005
2 >Korneliuk V. (vansha) 56 63 104 32 136 231 30 Apr 2005
3 Ильинец Д.В. (idv) 60 60 107 28 135 259 29 Apr 2005
4 Грибов (alex79) 54 54 92 17 109 388 29 Apr 2005
5 Бортник А.Г. (Bortnik) 48 48 82 9 91 460 27 Apr 2005
6 Arakelyan A. (Shurik) 48 48 79 1 80 483 28 Apr 2005
7 >Королев А.М. (Sanches) 39 59 79 0 79 286 30 Apr 2005
8 Пишнюк (Pishnuke) 47 47 79 0 79 482 26 Apr 2005
9 Держальцев В.А. (MadVet) 13 59 32 32 64 292 27 Apr 2005
10 Tony (KAI) 32 59 53 9 62 302 29 Apr 2005
11 Zhilyaev V. (zhilyaev) 33 33 58 0 58 708 29 Apr 2005
12 nick (nick) 27 41 57 0 57 549 28 Apr 2005
13 Ибрагимов А.Р. (Grumbold) 33 33 57 0 57 720 27 Apr 2005
14 Olga (olьka) 38 38 54 0 54 751 29 Apr 2005
15 Демченко А.В. (DAV) 25 49 46 7 53 455 30 Apr 2005
16 Менг В. (W.Meng) 28 28 51 0 51 778 25 Apr 2005
17 Прусак А. (Alex8) 31 31 51 0 51 780 28 Apr 2005
18 >Сопіла Ю.М. (Lord) 26 47 50 0 50 479 30 Apr 2005
19 Tokareva (Svetlana) 36 36 49 0 49 810 29 Apr 2005
20 Гущин А. (_Alex) 28 28 49 0 49 817 29 Apr 2005
21 Ластовка Н.А. (Last_Nata) 35 35 47 0 47 857 29 Apr 2005
22 Iobidze D.A. (Davita) 19 118 46 0 46 32 29 Apr 2005
23 Бордаченков А.А. (AlanBor) 25 25 40 3 43 943 28 Apr 2005
24 Alexeev A.G. (@ndrey) 25 25 40 0 40 935 25 Apr 2005
25 Novikov (Nikolai) 30 30 40 0 40 945 29 Apr 2005
26 Anizchenko S.I. (asi) 14 28 28 9 37 917 27 Apr 2005
27 Рыжков А. (RagMan) 21 56 36 0 36 368 30 Apr 2005
28 Pavliashvili L. (EchoOff) 23 23 35 0 35 1059 27 Apr 2005
29 K Z.I. (xfate) 23 23 35 0 35 1060 28 Apr 2005
30 Андриященко А.В. (a_av_sub) 20 43 34 0 34 574 29 Apr 2005

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

SELECT

Задача 53
Определите среднее число орудий для классов линейных кораблей. Получить результат с точностью до 2-х десятичных знаков

Я полагал, что в этой задаче лишь одна проблема - округление. Однако недавно получил следующее решение:

SELECT SUM(sum_g)/SUM(count_g) FROM
(SELECT SUM(numGuns) AS sum_g, COUNT(*) AS count_g
    FROM Classes INNER JOIN Ships ON Classes.class = Ships.class
     WHERE type='bb'
UNION
SELECT SUM(numGuns) AS sum_g, COUNT(*) AS count_g
     FROM Classes INNER JOIN Outcomes ON Classes.class=Outcomes.ship
     WHERE type='bb') AS a

Богатое для анализа ошибок решение :-). Начнем с округления. Число орудий - целое число (по типу столбца, а не по смыслу!). Поэтому и сумма будет числом целым. При делении целых чисел в SQL Server всегда получается целое число. Причем результат достигается не округлением, а ОТБРАСЫВАНИЕМ дробной части. Выполните, например, следующий запрос

SELECT 2/3

Результатом будет 0, что подтверждает сказанное. Поэтому, чтобы внести косметические исправления данного запроса, нужно выполнить преобразование хотя бы одного операнда к вещественному типу. Как я уже писал в справке, можно воспользоваться неявным преобразованием типа:

SELECT SUM(sum_g)*1.0/SUM(count_g)

т.е. при умножении на вещественную единицу числитель становится вещественным числом.

Теперь, поскольку требуется определить среднее по классам, то, во-первых, не нужно учитывать корабли, а, во-вторых, не нужно учитывать корабли из таблицы Outcomes.

Однако чтобы проанализировать допущенные ошибки, давайте рассмотрим решение в трактовке автора этого запроса, т.е. определим среднее значение по всем линейным кораблям из базы данных, а это не что иное, как задача 54. Я уже рассматривал эту задачу в выпуске 30, но с другой ошибкой.

Итак, в подзапросе подсчитывается число орудий и количество отдельно по кораблям из таблицы Ships и головным кораблям из таблицы Outcomes. Затем в основном запросе суммируем число орудий и количество кораблей, полученных по каждой таблице, и делим одно на другое, чтобы получить среднее значение.

Рассмотрим пример. Пусть в Ships есть 2 корабля с 11 и 8 орудиями, а в Outcomes - один корабль с 11-ю орудиями. Итого получаем 3 корабля и 30 орудий. Среднее 30/3=10. Правильно? Нет, т.е. правильно только в ряде случаев. Нам же нужно написать запрос, который будет верен на любых данных. Я вижу несколько контрпримеров.

Первый контрпример. А если в Outcomes не будет головного корабля, отвечающего условиям задачи? Тогда второй подзапрос даст: кораблей 0, число орудий NULL. В результате вычисление среднего в запросе даст

(19 + NULL)/(2+0) = NULL

вместо 10.

Второй контрпример. Пусть головной корабль класса 'bb' есть как в таблице Ships, так и в таблице Outcomes, т.е. это один и тот же корабль. Тогда в результате мы должны получить не 30/3, что нам дает представленное решение, а 19/2.

Третий контрпример. А если в предыдущей ситуации по кораблям головной корабль дважды принимал участие в сражениях? Тогда мы получим вместо тех же 19/2 - (19 + 22)/(2+2) = 41/4.

Четвертый контрпример… Придумайте сами. Вот так и формируется проверочная база сайта :-).

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

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

Работа

В иностранную компанию требуется аналитик.
г.Самара
Возраст: Предпочтительно до 35 лет
Должностные обязанности
Информационная система управления продажами:
1.Подготовка специальных отчетов и анализ отчетов при помощи Информационной Системы по управлению продажами
2.Участие в разработке и внедрении в ИТ-систему системы измерения показателей деятельности различных подразделений продаж
3.Оказание помощи Менеджеру информационных систем по управлению продажами и анализу в развитии Информационной Системы
4.Поиск ошибок в данных системы
5.Предоставление информации по запросам
6.Консультация по использованию системы управления продажами для менеджмента компании
7.Обучение и координация работы региональных Операторов Информационной Системы по управлению продажами
Аналитика:
1.Анализ и подготовка отчетности по данным мониторинга рынка сторонних компаний
2. Анализ эффективности инвестиционных программ, направленных на увеличение продаж и доли рынка в регионе
3. Анализ рынка и продаж по региону, предоставление соответствующей отчетности менеджменту
Требования: Высшее образование предпочтительно в области IT. Опыт работы на подобной должности от 1,5 лет желательно в иностранной компании .Владение английским языком - желательно. Навыки администрирования MS SQL server 2000. Навыки администрирования, разработки и анализа баз данных. Профессиональные аналитические способности.
Компенсационный пакет: Оплата от 1000 $
Контактное лицо: Машутина Ольга (CV@senat.samara.ru), т. (8462) 733-688, ext 111

Конкурс

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

Контакты

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

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

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

В избранное