Отправляет 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)1176167234121452152.266107.669972011-01-222011-02-04
2Карасёва Н.В. (vlksm)1176167234121719155.607124.819972011-01-232011-02-04
3Дубинский А.В. (_yizraor)117617123412429279.454355.163972011-01-202011-01-25
4Держальцев В.А. (MadVet)3170172223932097144.065101.318862011-01-182011-01-20
5Сальников С.А. ($erges)11661722339010508.5117.886832011-01-112011-02-04
6Бежаев А.Ю. (Baser)617116723396270106.88183.868812011-01-292011-02-04
7Зотов П.Г. (Ozzy)116873223891027214.214190.297802011-01-152011-02-04
8Дроздков А.Н. (anddros)51691682339198010.2349.468762011-02-032011-02-04
9Бойко Д.М. (Angellore)81681722338812451135.371246.257732011-01-072011-01-29
10Тарасов Д.Б. (Gavrila)916417223379196499.48057.053692011-01-112011-02-04
11Яцук А.А. (Faust_zp)114865223521093121.89689.835692010-02-012010-05-22
12Шиндин А.В. (AlShin)1014016121326776295.115687.573662010-12-032011-01-31
13Курочкин П.А. (qwrqwr)1216317323374441109.06965.135642011-01-252011-02-04
14Орлов М.В. (Eagleoff)111611552337296392.80759.074602010-12-062011-02-04
15Умрихина Е.В. (Umrikhina)1146672334394941.38843.454562010-11-292010-12-25
16Мурашкин И.В. (lepton)1117162212731706122.879636.879422010-11-232010-12-03
17Сенкевич С.В. (GreyC)111722128439357.70023.321382009-10-072010-01-01
18Селезнёв А.С. (Артём С.)11141062127644447.20130.368382009-01-252010-09-08
19Печатнов В.В. (pvv)114814021332108540.61215.512332010-10-082011-02-03
20Dvoryaninov V. (Валдай)1815317223341550158.389162.672322011-01-082011-02-02

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

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1>Barvinsky R.O. (barik)173925224792204 Feb 2011
2>Целищев М.А. (m.a)181054304315504 Feb 2011
3>Федоренко С.А. (aqualaserx)3363541189604 Feb 2011
4>Шукало А.М. (toha134)223136036174104 Feb 2011
5>Кожаринов А. (bubala)101152702711604 Feb 2011
6Веселов А. (rec)182626026211101 Feb 2011
7Лебедь А.С. (s.w.a.n.)714101525143704 Feb 2011
8Летов М. (mikel)002525285604 Feb 2011
9>Аксенов В.С. (DimirDevil)16312402486804 Feb 2011
10Корпусова С.М. (belove)161624024286602 Feb 2011
11Лещёв С.В. (SPMV)824111223115603 Feb 2011
12>Гордеева Е. (rucheek)1131922310204 Feb 2011
13>Dedyukiev K. (alban)16652102142604 Feb 2011
14>Мазур А.А. (Ondre)14432102164404 Feb 2011
15>Мазанов А.Б. (AlMaz)41251520149104 Feb 2011
16>Долгалев Д.Г. (DenisD)101413720247904 Feb 2011
17abakumov (Olejka)1673161949230 Jan 2011
18>Базавлук М. (DoNotLook)13661901960604 Feb 2011
19dokon (dokondokon)001919336003 Feb 2011
20>Evans (Skylar)10701801838004 Feb 2011
21>Гунин Е.В. (Evgenez)12451801861504 Feb 2011
22Savchenko A. (Yasha123)0290181890604 Feb 2011
23>Довжик М.В. (medved_mik)1131518203904 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"

В избранное