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

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


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

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

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

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

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

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


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

§ Опубликован FAQ на задачу 49, которая вызывала много вопросов. Надеюсь, что теперь их станет меньше. :-)

§ На sqlbooks.ru опубликован отзыв о сайте SQL-EX.RU Алексея Шуленина (эксперта по технологиям обработки и анализа информации, департамент стратегических технологий, Microsoft). Отзыв не имеет официального характера и отражает лишь мнение его автора. Это не реклама сайта, о чем свидетельствует большое число критических замечаний. :-)

§ Произошла замена задачи и изменение сертификационных требований:
- перенесены на обучающий этап задачи 15, 55, 56, 57;
- старая задача 74 теперь имеет номер 57; под номером 74 теперь находится новая задача от vlksm (сложность 2 балла);
- старая задача 89 теперь имеет номер 56; под номером 89 теперь находится новая задача от _Bkmz_ (сложность 3 балла);
- новая задача 55 начинает теперь второй этап (сложность 1);
- новая задача от $erges выставлена под номером 15 (сложность 1);
- просроченные заказы сертификатов удалены.

§ Продвинулись в рейтинге:
38. Sysa (задач 137, время 77.723)
47. DeadLock5 (136, 112.998)
53. Guy (133, 2.539)
55. Botch (133, 19.840)
62. TomGolab (133, 41.860)
75. Fomichev (131, 14.145)
88. EffEct (127, 87.128)
92. lexaNRJ (127, 81.590)

§ Продвижение ближайших претендентов на попадание в ТОР 100:
111. Ozzy (124, 19.799)
170. HandKot_ (111, 155.433)
174. _Bkmz_ (110, 2.324)

§ На этой неделе сертифицированы:
Pyc (A08025061) [BK] - г.Новомосковск, Россия
Psixo_nsk (A08031341) [BK] - г.Новосибирск, Россия
Ilyin_Andrey (A08031441) [BK] - г.Симферополь, Украина

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

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

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

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

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

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

No Person Number of
Sel_ex
Last_Sel Number of
DML_ex
Scores Days Days_2 Days_3 S_3 LastSolved LastVisit
1 Сальников С.А. ($erges) 147 147 21 359 81 2.751 3.359 31 17 May 2008 20 Jun 2008
2 Карасёва Н.В. (vlksm) 147 147 21 359 750 72.877 46.383 31 25 May 2008 18 Jun 2008
3 Печатнов В.В. (pvv) 145 146 21 354 190 19.151 6.326 28 26 Apr 2008 20 Jun 2008
4 Креславский О.М. (Arcan) 146 146 21 356 466 22.488 12.553 28 10 May 2008 20 Jun 2008
5 Держальцев В.А. (MadVet) 146 146 21 356 1128 60.815 28.482 28 18 May 2008 20 May 2008
6 Любченко В.А. (IAS56) 146 146 21 356 615 403.439 373.617 28 11 May 2008 08 Jun 2008
7 Голубин Р.С. (Roman S. Golubin) 145 145 21 353 997 92.927 58.822 25 11 May 2008 19 Jun 2008
8 Мурашкин И.В. (lepton) 143 146 21 347 767 37.107 26.815 21 28 Apr 2008 12 May 2008
9 Белогурова К. (Katy_Ekb) 142 143 21 344 361 10.714 4.673 18 20 May 2008 27 May 2008
10 Войнов П.Е. (pаparome) 143 146 21 345 992 3.045 .213 17 12 May 2008 20 Jun 2008
11 Северюхин Ю.А. (Venser) 138 142 21 335 335 4.925 .655 14 01 Feb 2008 04 Feb 2008
12 Борисенков Д.В. (xuser) 141 142 21 340 92 3.217 .926 14 02 May 2008 30 May 2008
13 Мишин С.А. (CepbIu) 142 142 21 342 40 9.754 2.148 14 28 May 2008 19 Jun 2008
14 Тарасов Д.Б. (Gavrila) 141 142 21 339 998 23.531 2.501 14 20 May 2008 11 Jun 2008
15 Солдатенков Ю.С. (SolYUtor) 139 142 21 336 703 17.844 2.695 14 20 Apr 2008 18 Jun 2008
16 Кувалкин К.С. (Cyrilus) 139 142 21 336 1207 13.037 2.782 14 15 Mar 2008 19 Jun 2008
17 Шептунов П.П. (Dzen) 137 142 21 334 279 8.120 3.499 14 02 Oct 2007 15 Nov 2007
18 Селезнёв А.С. (Артём С.) 140 142 21 339 127 15.589 4.279 14 14 Mar 2008 31 Mar 2008
19 iglbeat (iglbeat) 142 142 21 342 281 27.442 6.641 14 21 May 2008 21 May 2008
20 Мальцев А.В. (Палкин) 137 142 21 334 422 48.779 7.690 14 13 Oct 2007 18 Jun 2008

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

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1 >Медведев В.В. (MeVit) 46 57 97 32 129 828 20 Jun 2008
2 >Бойченко М.В. (bmz) 55 55 103 0 103 1618 20 Jun 2008
3 >Соколов А. (Falcon06) 49 49 91 11 102 1649 20 Jun 2008
4 >Pogony (SERGEY$) 46 50 94 2 96 1722 20 Jun 2008
5 >Зайцев В. (VSZ) 44 44 83 0 83 2301 20 Jun 2008
6 >Токмянин А.В. (CADakaRK) 38 38 72 9 81 2378 20 Jun 2008
7 Воротников А. (Длинный) 25 54 49 30 79 968 20 Jun 2008
8 Шагубаков М.Р. (Max_xxx) 41 42 76 3 79 2421 20 Jun 2008
9 >Татаренко В.С. (Aviaradist) 24 54 56 20 76 1097 20 Jun 2008
10 >Antonov A.A. (NeVikruchivayMneYaica) 35 41 73 1 74 2344 20 Jun 2008
11 >Красинский А. (Lyosha) 33 44 71 0 71 2304 20 Jun 2008
12 Ильин А.А. (Ilyin_Andrey) 16 67 33 34 67 591 20 Jun 2008
13 ovaenca (ovaenca) 23 36 46 17 63 2453 19 Jun 2008
14 Абасов А.А. (abas) 27 27 46 17 63 3310 18 Jun 2008
15 >Торбик Ю.Л. (Jora.YT) 34 34 63 0 63 3325 20 Jun 2008
16 >Бельков Р.В. (belkov) 27 49 60 0 60 1849 19 Jun 2008
17 >Мусиенко (undersoul) 27 37 59 0 59 2790 20 Jun 2008
18 Мережко Н. (MN_Donetsk) 24 34 55 0 55 3135 20 Jun 2008
19 T N. (Krollo) 29 29 52 0 52 4275 19 Jun 2008
20 >Царьков А.Г. (Skypchel) 28 28 51 0 51 4403 20 Jun 2008
21 >Korobov (Aleksus) 28 28 50 0 50 4478 20 Jun 2008
22 >Оксман Д.С. (desert) 29 29 50 0 50 4489 20 Jun 2008
23 Денисов Д.В. (E_1) 22 47 47 0 47 2220 17 Jun 2008
24 >Бутримов Г.Б. (gennadiy) 24 54 46 0 46 1619 20 Jun 2008
25 >Святаш А.Н. (Sancho_P) 19 31 45 0 45 3720 20 Jun 2008
26 Андреева М.Ю. (Мари_Андреева) 15 57 33 11 44 1266 20 Jun 2008
27 Глазырин Д. (glassman) 18 31 44 0 44 3468 19 Jun 2008
28 Олейнер К.О. (XareH) 18 29 43 1 44 3887 18 Jun 2008
29 >Симохин П.А. (Reno) 21 51 41 0 41 1833 20 Jun 2008
30 >Карахтанов Р.С. (KRS) 18 86 40 0 40 292 20 Jun 2008

Изучаем SQL

Требования к SQL Server по усилению поддержки: предложение OVER() и упорядоченные вычисления

Itzik Ben-Gan и Sujata Mehta (оригинал: SQL Server Feature Enhancement Request - OVER Clause and Ordered Calculations )
Перевод Карасева Н.В.

Введение

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

Мы считаем, что конструкция OVER() уменьшает пропасть между тем, как программист представляет себе задачу, и способом ее решения средствами T-SQL, а также между теоретико-множественным подходом и курсорами.

Что касается задач с упорядоченными вычислениями, OVER() позволяет не только упростить логику решения, но и, как следствие, сделать его оптимальнее, главным образом, за счет логического дополнительного предложения ORDER BY.

Это дополнительное предложение ORDER BY логически предшествует конструкции OVER(), (заметьте: совсем не так, как при традиционном назначении ORDER BY - как способа окончательного представления результирующего набора), что упрощает логику кода. Что касается производительности, логическое ORDER BY может указать оптимизатору порядок последовательности, допускающий использование индексов, или единую операцию сортировки с однократным сканированием данных в противовес многократным проходам и неэффективным планам.

В SQL Server 2005 появилась частичная поддержка предложения OVER, но нам кажется, что многих важных элементов предложения OVER все еще не достает. В этой работе:

  • рассматриваются решения типичных для данного случая задач в SQL до введения предложения OVER (раздел 1)
  • описаны ключевые элементы в SQL, позволяющие выполнять действия с упорядоченными данными (раздел 2)
  • описана имеющаяся в настоящее время поддержка OVER в SQL Server 2005 (раздел 3)
  • представлены детальные пожелания расширения использования OVER -отсутствующие элементы для OVER в SQL Server в порядке их приоритета (раздел 4)

     

    Если вы уже знакомы с задачами, которые плохо решаются без предложения OVER - а именно, с упорядоченными вычислениями, - и с существующей реализацией OVER в SQL Server 2005, то можете сразу перейти к разделу 4.

    Цель этой статьи - убедить Microsoft в необходимости расширения поддержки предложения OVER() в SQL Server, а в идеале, - полной реализации стандарта ANSI: SQL 2003 для предложения OVER, плюс расширение самого стандарта. Мотивировка заключается в том, что эта возможность имеет широкое применение и поможет решить многие задачи бизнеса. Кроме того, другие ведущие платформы баз данных (включая Oracle и DB2) уже имеют значительно более богатые возможности использования предложения OVER.

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

    Поэтому ещё одной целью данной статьи является желание ознакомить читателей с предложением OVER, и, если они убедятся в важности расширения её возможностей, то побудить их проголосовать за это на сайте Microsoft Connect (URL будут представлены как в разделе Введение, так и в Заключении).

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

    Понимая, что в практическом смысле это не простая задача, мы будем выстраивать расширение возможностей в приоритетном порядке в соответствии с нашими представлениями об их важности. И, если убедить, что такие расширения должны иметь высокий приоритет, то Microsoft может постепенно вводить их в новых версиях. Мы подробно рассмотрим следующий запрос о расширении возможностей OVER в разделе 4 (в приоритетном порядке):

    1. ORDER BY для агрегатов
    2. Функции LAG and LEAD
    3. TOP OVER
    4. Векторные выражения для вычислений на основе предложения OVER
    5. Оконные вспомогательные предложения ROWS и RANGE
    6. Предложение DISTINCT для агрегатных функций
    7. Функции FIRST_VALUE, LAST_VALUE
    8. Накопительные вычисления для упорядоченных данных
    

    Вы можете проголосовать по каждому пункту, используя следующие адреса, на основании собственных представлений об их важности:

    ORDER BY для агрегатов:

    https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=254387

    функции LAG and LEAD:

    https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=254388

    TOP OVER:

    https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=254390

    Векторные выражения для вычислений на основе предложения OVER:

    https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=254391

    Оконные вспомогательные предложения ROWS и RANGE

    https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=254392

    Предложение DISTINCT для агрегатных функций:

    https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=254393

    функции FIRST_VALUE, LAST_VALUE:

    https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=254395

    Прогрессивные (накопительные) вычисления:

    https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=254397

    Благодарности

    Выражаем благодарность всем, кто откликнулся на эту статью: Erland Sommarskog, Gordon Linoff, Adam Machanic, Steve Kass, David Portas, Marcello Poletti, Dieter Noeth.

    (Продолжение следует...)

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

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

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

    § Желающих поспособствовать популяризации сайта прошу проголосовать/поставить закладку в социальных сетях:
    del.icio.us
    dzone.com
    Digg.com
    stumbleupon.com

    Контакты

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

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

    В избранное