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

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


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

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

http://www.sql-ex.ru

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

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

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

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


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

§ Как справедливо заметил val_5, размеры столбцов в основной БД "Компьютеры", которая доступна для скачивания, морально устарели. Например, для скорости процессора использовался тип decimal(3, 0). Технический прогресс заставил меня обновить скрипт, который вводил в заблуждение дотошных посетителей сайта.

§ По настоянию Угрюмого & Cyrilus отредактирована формулировка задачи 57, которая теперь звучит так:
Для классов, имеющих потери в виде потопленных кораблей и не менее 3 кораблей в базе данных, вывести имя класса и число потопленных кораблей.

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

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

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

Лучшие результаты (ТОР 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 15 Apr 2005
2 Кувалкин К.С. (Cyrilus) 137 137 20 311 102 4.896 06 Mar 2005 15 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 13 Apr 2005
5 Мельникова И.А. (Iris_m) 137 137 20 311 324 89.881 01 Apr 2005 11 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 15 Apr 2005
8 Рахманов И.Е. (bloom) 136 136 20 307 118 14.144 11 Apr 2005 12 Apr 2005
9 Hakobyan H.H. (hamlet) 136 136 20 307 161 37.812 09 Mar 2005 29 Mar 2005
10 Шипунов И. (IAS) 136 136 20 307 265 82.049 05 Mar 2005 31 Mar 2005
11 Иткин И.Л. (joseph_itkin) 135 136 20 304 375 2.853 07 Mar 2005 13 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 12 Apr 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 10 Apr 2005
16 Gontovoy (noname) 124 124 20 284 30 6.450 15 Apr 2005 15 Apr 2005
17 Gershovich (VIG) 122 122 20 280 764 10.557 14 Apr 2005 16 Apr 2005
18 Якутин Н.В. (ZrenBy) 132 136 6 275 511 3.991 14 Sep 2004 18 Jan 2005
19 Тортумашев Е.А. (Johnny) 120 120 20 274 167 17.343 28 Mar 2005 12 Apr 2005
20 Рассказов А. (ra) 120 121 19 274 70 29.764 28 Jan 2005 25 Feb 2005

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

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1 Щербин Е.П. (Угрюмый) 62 62 109 32 141 232 15 Apr 2005
2 Iobidze D.A. (Davita) 60 60 107 32 139 253 16 Apr 2005
3 Макеев И. (IgorM) 58 58 104 1 105 315 15 Apr 2005
4 Морозов (defender) 57 57 101 0 101 329 15 Apr 2005
5 >Щетинин П.М. (BaXteR) 50 50 83 1 84 439 16 Apr 2005
6 Горяйнов С.Н. (SergSPL) 49 49 80 0 80 463 13 Apr 2005
7 Walkiewicz P. (Walek) 36 36 63 4 67 601 14 Apr 2005
8 >Лагутин Д.Ю. (WhiteTiger) 41 41 60 0 60 650 16 Apr 2005
9 Пономаренко И.В. (Ghost_I) 24 83 54 0 54 86 15 Apr 2005
10 xxx T.X. (tonyxx) 27 27 53 1 54 725 16 Apr 2005
11 andreeyka A.A. (andreyka) 28 28 49 0 49 774 15 Apr 2005
12 Кременецкий (Yuriy) 16 53 35 9 44 395 15 Apr 2005
13 Shelest V.N. (Alex85) 24 39 35 8 43 726 15 Apr 2005
14 Валеев (ivor_) 25 25 40 0 40 917 15 Apr 2005
15 Дейлов Р.А. (RaDer) 16 80 39 0 39 93 15 Apr 2005
16 >Меньшиков С.И. (Menya) 23 51 37 0 37 419 15 Apr 2005
17 Лапина (loony) 18 28 36 0 36 807 14 Apr 2005
18 Агеев О.И. (abakum) 23 27 36 0 36 933 15 Apr 2005
19 leonidze M. (micho) 23 23 34 2 36 1067 15 Apr 2005
20 Горбенко А.А. (Gorbenko) 18 46 32 0 32 454 14 Apr 2005
21 Eliseev (Shilko) 15 15 17 15 32 1494 12 Apr 2005
22 Gerehov D.A. (D_AGe) 12 74 31 0 31 119 14 Apr 2005

Изучаем SQL

Случайная выборка строк из таблицы в SQL Server 2000

В свое время я использовал случайную выборку записей для формирования списка вопросов теста. Делал я это на клиенте, используя функции базового языка, генерирующие псевдослучайное число в заданном диапазоне (например, функция RND в Visual Basic).

Однако оказалось, что достаточно просто это можно организовать и на сервере, хотя в T-SQL нет функции, аналогичной RND.

Решение основывается на типе данных uniqueidentifier, который называется глобальным уникальным идентификатором и имеет вид:


xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,


где каждое x является шестнадцатеричной цифрой в диапазоне 0-9 или a-f. Например, EEA8BF3A-7633-477A-B8C1-8C60DC9AD20C

Для решения нашей задачи важно то, что этот уникальный идентификатор может генерироваться автоматически при использовании функции NEWID. Просто напишите в QA (Query Analyzer)

SELECT NEWID()

(или SELECT TOP 1 NEWID() FROM PC на сайте)

и вы все увидите. Причем, выполняя этот запрос снова и снова, вы будете получать все время разные значения. На то он и "уникальный" этот идентификатор.

Так вот идея заключается в том, чтобы в запрос, возвращающий нужное число записей, добавить вычисляемый столбец NEWID, по которому должна выполняться сортировка. Поскольку генерируемые значения совершенно произвольны, то мы и получим произвольную выборку.

Итак, пусть нам нужно выбрать две произвольные любые модели из таблицы Product:

SELECT model FROM
(
SELECT TOP 2 model, NEWID() [id] FROM Product
ORDER BY [id]
) x

Выполним этот запрос несколько раз:
--1--
1232
1433
--2--
1276
1260
--3--
1750
1298

Если хотите, можете продолжить.

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

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

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

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

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

Контакты

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

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

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

В избранное