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

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


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

Выпуск 332 от 05 февраля 2011 г.

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

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

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

Демонстрация плана выполнения запроса и сравнительная оценка эффективности решений поможет вам освоить принципы оптимизации запросов, которые пригодятся на третьем рейтинговом этапе, который начинается после 138 задачи.

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


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

§ Подправил список задач на странице рейтинговых упражнений. Теперь перенесенные наверх начатые, но не решенные, задачи второго этапа будут видны в списке выбора задачи.
Прежде при заходе на страницу с упражнениями, открывалась как раз начатая задача, но номер в списке стоял 1 за неимением правильного. Как оказалось, это рассеивало внимание, и ниже взгляд уже не опускался. :-)

§ Самые популярные темы недели на форуме

Топик  Сообщений
780  11
126 (SELECT) 9
168 (SELECT) 9
140 (SELECT) 5
57 (Learn) 4

 

§ Авторы недели на форуме

Автор  Число сообщений
anddros   12
m.a  7
qwrqwr   6
Pegoopik   6
$erges   6

 

§ Изменения среди лидеров (решенные за неделю задачи третьего этапа):
6. Baser (167)
8. anddros (168)
38. Pegoopik (140, 142, 166)
56. herrRo (139, 142, 145)

§ К третьему этапу подошли:
56. herrRo (задач 138, время 387.392)

§ Продвинулись в рейтинге:
86. tolikas (129, 33.239)
87. GeBy (127, 17.412)

§ Продвижение ближайших претендентов на попадание в ТОР 100:
103. Sergey79 (123, 1341.327)
110. Fomichev (114, 25.592)
116. bubala (115, 18.850)
138. __Sai (109, 93.676)
147. m.a (106, 14.548)
167. iljy (103, 1.985)

§ На этой неделе сертифицированы:
DmitryGolubev (A11080078) [BK] - г. Москва, Россия
alban (A11070732) [BK] - г. Элиста, Россия

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

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

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

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

На обучающем этапе - 25883

Сертифицировано на сайте - 483

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

No Person Number of
Sel_ex
Last_Sel Number of
DML_ex
Scores Days Days_2 Days_3 S_3 LastSolved LastVisit
1 Креславский О.М. (Arcan)1 176 167 23 412 1452 152.266 107.669 97 2011-01-22 2011-02-04
2 Карасёва Н.В. (vlksm)1 176 167 23 412 1719 155.607 124.819 97 2011-01-23 2011-02-04
3 Дубинский А.В. (_yizraor)1 176 171 23 412 429 279.454 355.163 97 2011-01-20 2011-01-25
4 Держальцев В.А. (MadVet)3 170 172 22 393 2097 144.065 101.318 86 2011-01-18 2011-01-20
5 Сальников С.А. ($erges)1 166 172 23 390 1050 8.511 7.886 83 2011-01-11 2011-02-04
6 Бежаев А.Ю. (Baser)6 171 167 23 396 270 106.881 83.868 81 2011-01-29 2011-02-04
7 Зотов П.Г. (Ozzy)1 168 73 22 389 1027 214.214 190.297 80 2011-01-15 2011-02-04
8 Дроздков А.Н. (anddros)5 169 168 23 391 980 10.234 9.468 76 2011-02-03 2011-02-04
9 Бойко Д.М. (Angellore)8 168 172 23 388 1245 1135.371 246.257 73 2011-01-07 2011-01-29
10 Тарасов Д.Б. (Gavrila)9 164 172 23 379 1964 99.480 57.053 69 2011-01-11 2011-02-04
11 Яцук А.А. (Faust_zp)1 148 65 22 352 1093 121.896 89.835 69 2010-02-01 2010-05-22
12 Шиндин А.В. (AlShin)10 140 161 21 326 776 295.115 687.573 66 2010-12-03 2011-01-31
13 Курочкин П.А. (qwrqwr)12 163 173 23 374 441 109.069 65.135 64 2011-01-25 2011-02-04
14 Орлов М.В. (Eagleoff)11 161 155 23 372 963 92.807 59.074 60 2010-12-06 2011-02-04
15 Умрихина Е.В. (Umrikhina)1 146 67 23 343 949 41.388 43.454 56 2010-11-29 2010-12-25
16 Мурашкин И.В. (lepton)1 117 162 21 273 1706 122.879 636.879 42 2010-11-23 2010-12-03
17 Сенкевич С.В. (GreyC)1 117 2 21 284 393 57.700 23.321 38 2009-10-07 2010-01-01
18 Селезнёв А.С. (Артём С.)1 114 106 21 276 444 47.201 30.368 38 2009-01-25 2010-09-08
19 Печатнов В.В. (pvv)1 148 140 21 332 1085 40.612 15.512 33 2010-10-08 2011-02-03
20 Dvoryaninov V. (Валдай)18 153 172 23 341 550 158.389 162.672 32 2011-01-08 2011-02-02

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

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1 >Barvinsky R.O. (barik) 17 39 25 22 47 922 04 Feb 2011
2 >Целищев М.А. (m.a) 18 105 43 0 43 155 04 Feb 2011
3 >Федоренко С.А. (aqualaserx) 3 3 6 35 41 1896 04 Feb 2011
4 >Шукало А.М. (toha134) 22 31 36 0 36 1741 04 Feb 2011
5 >Кожаринов А. (bubala) 10 115 27 0 27 116 04 Feb 2011
6 Веселов А. (rec) 18 26 26 0 26 2111 01 Feb 2011
7 Лебедь А.С. (s.w.a.n.) 7 14 10 15 25 1437 04 Feb 2011
8 Летов М. (mikel) 0 0 25 25 2856 04 Feb 2011
9 >Аксенов В.С. (DimirDevil) 16 31 24 0 24 868 04 Feb 2011
10 Корпусова С.М. (belove) 16 16 24 0 24 2866 02 Feb 2011
11 Лещёв С.В. (SPMV) 8 24 11 12 23 1156 03 Feb 2011
12 >Гордеева Е. (rucheek) 1 1 3 19 22 3102 04 Feb 2011
13 >Dedyukiev K. (alban) 16 65 21 0 21 426 04 Feb 2011
14 >Мазур А.А. (Ondre) 14 43 21 0 21 644 04 Feb 2011
15 >Мазанов А.Б. (AlMaz) 4 12 5 15 20 1491 04 Feb 2011
16 >Долгалев Д.Г. (DenisD) 10 14 13 7 20 2479 04 Feb 2011
17 abakumov (Olejka) 1 67 3 16 19 492 30 Jan 2011
18 >Базавлук М. (DoNotLook) 13 66 19 0 19 606 04 Feb 2011
19 dokon (dokondokon) 0 0 19 19 3360 03 Feb 2011
20 >Evans (Skylar) 10 70 18 0 18 380 04 Feb 2011
21 >Гунин Е.В. (Evgenez) 12 45 18 0 18 615 04 Feb 2011
22 Savchenko A. (Yasha123) 0 29 0 18 18 906 04 Feb 2011
23 >Довжик М.В. (medved_mik) 1 1 3 15 18 2039 04 Feb 2011

Изучаем SQL

О генерации числовых последовательностей в SQL Server

Бежаев А.Ю.

В очередной реализации MS SQL Server 2005 появилась возможность использования рекурсивных CTE конструкций, позволяющих реализовывать циклы для генерации числовых последовательностей и итерационных вычислений.

Введение в рекурсии MS SQL Server можно найти в соответствующих руководствах Microsoft, учебнике и Интернете. В данном параграфе мы рассмотрим только новые примеры, помогающие в ее практическом освоении. Самым простым примером использования рекурсивного CTE является генерация ограниченной числовой последовательности натурального ряда: 1,2,3, ... N:

WITH Series(a) AS
(
 SELECT 1
 UNION ALL
 SELECT a+1 FROM Series WHERE a < 100
)

SELECT * FROM Series;

Эта конструкция предназначена для генерации последовательности целых чисел (в виде одноколоночной таблицы) от 1 до 100.

А. Итерационные вычисления

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

Эти последовательности получаются с помощью итераций (рекурсий SQL Server), например:

A1, A2, A3, A4 = fun(A1, A2, A3).

 

Здесь A1, A2, A3 - начальные значения для итерационного процесса, fun - функция для вычисления 4-го, пятого и т.д. чисел, которая всегда задействует предыдущие 3 числа. Предположим, что процесс стартует с трех одинаковых чисел A1=A2=A3=1. Тогда схема реализации с использованием рекурсивных CTE будет иметь следующий вид:

WITH Table(iter,A1,A2,A3,A4) AS
(
 SELECT iter=1, A1=1, A2=1, A3=1, A4=fun(1,1,1)
 UNION ALL
 SELECT iter+1, A1=A2, A2=A3, A3=A4, A4=fun(A2,A3,A4)
 FROM Table WHERE iter < 50
)

SELECT * FROM Table

Здесь колонка iter введена для вывода номера итерации, колонка [A1] содержит пятьдесят первых членов последовательности, [A2],[A3] и [A4] - вспомогательные колонки для хранения необходимых промежуточных результатов.

Обобщением такого подхода является следующий пример. Пусть n>=1, m>=1. Тогда последовательные вычисления

A[n+1] = fun(A[1], A[2], …, A[n])
A[n+2] = fun(A[2], A[3], …, A[n+1])
…
A[n+m] = fun(A[m], A[m+1], …, A[m+n-1])

приводят к генерации m (m>=1) новых членов последовательности A[n+1],…,A[n+m].

Мы не будем приводить примера использования рекурсии в общем случае, так как это возможно разве что в виде некоторого псевдокода. Читатели могут попытаться построить конкретные примеры самостоятельно. Отметим, что результирующая таблица выглядит следующим образом:

A[1] A[2] … A[n] A[n+1]
A[2] A[3] … A[n+1] A[n+2]
…
A[m+1] A[m+2] … A[m+n-1] A[m+n]

B. О последовательности чисел Фибоначчи

Читать далее...

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

§ Приглашаем вас посетить Интерактивный учебник по SQL.
   Ресурс позиционируется как "справочное обеспечение" для сайта SQL-EX.RU, но может использоваться и независимо от него.

§ Онлайновый выпуск рассылки можно почитать на сайте.

§ Все статьи, публикуемые в рассылке, затем выкладываются на сайте Книги и статьи по SQL.

§ Хотите поддержать проект? Вот инструкция по применению.

Контакты

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

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

В избранное