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

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


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

SQL Exercises

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

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

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

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

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


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

§ Добавил предложенный Roman S. Golubin вариант данных для проверки задачи 130.
Подлатал также задачу 19DML (сообщение на форуме от Eka).
Проверьте свои решения.

§ Заменил задачу 14, вся сложность которой заключалась в понимании формулировки. Новая задача имеет сложность 2 балла с учетом обучающего этапа.

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

§ =Maxim= решил первую задачу третьего этапа (задач 139, 17-е место, время на третьем этапе .036). Теперь в 20-ке присутствуют только участники 3-го этапа.

§ Новые лица в сотне и вернувшиеся в нее:
SergeyTikh (задач 116, время 6.695)

§ Продвинулись в рейтинге:
_x_F1WC (135, 45.041)
Ocean (135, 46.529)
modicus (131, 7.898)
yuriy.rozhok (131, 17.650)
Guy (130, 2.139)
Katy_Ekb (129, 3.527)
elka (127, 60.592)

§ На этой неделе сертифицированы:
Джон Датский (A07019520) [BK] (г.Барнаул, Россия)
Sergey79 (A07014588) [BK] (г.Санкт-Петербург, Россия)

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

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

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

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

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

No Person Number of
Sel_ex
Last_Sel Number of
DML_ex
Scores Days Days_2 Days_3 S_3 LastSolved LastVisit
1 Северюхин Ю.А. (Venser) 141 142 21 340 36 4.912 .655 14 08 Apr 2007 02 Aug 2007
2 Солдатенков Ю.С. (SolYUtor) 141 142 21 340 320 17.807 2.695 14 03 Apr 2007 03 Aug 2007
3 Шептунов П.П. (PavelPS) 141 142 21 340 119 8.145 3.499 14 25 Apr 2007 30 Jul 2007
4 Мурашкин И.В. (lepton) 141 142 21 340 371 15.737 5.539 14 29 Mar 2007 03 Aug 2007
5 Карасёва Н.В. (vlksm) 141 142 21 340 389 31.344 5.912 14 30 May 2007 04 Aug 2007
6 Мальцев А.В. (Палкин) 141 142 21 340 310 27.974 7.690 14 23 Jun 2007 26 Jul 2007
7 Голубин Р.С. (Roman S. Golubin) 141 142 21 340 588 55.391 34.203 14 29 Mar 2007 03 Aug 2007
8 Агапов В. (KERBEROS) 137 141 20 329 89 6.163 1.262 11 20 Nov 2006 27 Jul 2007
9 Кувалкин К.С. (Cyrilus) 140 141 20 335 901 12.541 2.519 11 14 May 2007 03 Aug 2007
10 Зверев Д.Л. (dimzv) 137 141 20 329 1141 9.294 4.938 11 19 Dec 2006 22 Dec 2006
11 Войнов П.Е. (pаparome) 140 142 21 336 616 2.765 .049 10 02 May 2007 29 Jun 2007
12 Любченко В.А. (IAS56) 140 142 21 336 313 176.801 20.130 10 14 Jul 2007 17 Jul 2007
13 Тарасов Д.Б. (Gavrila) 139 140 21 333 691 20.381 .513 7 18 Jul 2007 03 Aug 2007
14 Васьков Е.В. (Johan) 139 140 21 333 253 12.786 11.402 7 29 Mar 2007 26 Jul 2007
15 Валуев Д.И. (Fiolent) 138 140 20 328 1345 117.088 62.302 4 11 May 2007 03 Aug 2007
16 Юлдашев М.Р. (Snowbear) 138 139 21 329 642 4.132 .000 3 21 Apr 2007 03 Aug 2007
17 Утёнков М.Н. (=Maxim=) 138 139 21 329 451 25.187 .036 3 28 Jul 2007 02 Aug 2007
18 Креславский О.М. (Arcan) 138 139 21 329 67 9.932 .315 3 07 Apr 2007 02 Aug 2007
19 Держальцев В.А. (MadVet) 134 139 20 320 540 34.190 3.085 3 08 Oct 2006 19 Oct 2006
20 Палий С.А. (PS_Sergey) 135 139 20 321 212 15.704 4.188 3 01 Dec 2006 03 Dec 2006

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

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1 Павлова А.В. (Ариам) 53 53 102 2 104 1185 03 Aug 2007
2 Ahmetzyanov D.D. (a2d) 47 57 98 0 98 1080 03 Aug 2007
3 Виноградов В.Г. (vin_val) 49 49 91 5 96 1433 03 Aug 2007
4 Кошелев П.М. (Gamaun) 40 46 80 7 87 1518 03 Aug 2007
5 Михайлов С.Г. (zerga) 36 96 82 0 82 188 02 Aug 2007
6 soaloa (soaloa) 27 47 56 21 77 941 01 Aug 2007
7 Медведев Г.М. (insert) 39 39 74 0 74 2009 03 Aug 2007
8 khomeriki I. (ikhomeriki) 31 102 68 0 68 154 03 Aug 2007
9 Говорухина Г.Г. (Gala) 36 36 68 0 68 2274 03 Aug 2007
10 Долидзе А.А. (GuestFromFuture) 19 55 42 23 65 788 02 Aug 2007
11 Papukashvili (MasterRezo) 22 55 52 9 61 706 03 Aug 2007
12 Колосов В.Н. (Vitaliy) 33 33 61 0 61 2578 02 Aug 2007
13 asd A.A. (redbaron) 31 31 58 0 58 2738 02 Aug 2007
14 Бобин А.В. (rangas) 31 31 58 0 58 2745 03 Aug 2007
15 Шуваев А. (s_andrey) 25 25 36 17 53 3169 03 Aug 2007
16 ahmad A. (shajil) 28 28 50 1 51 3258 03 Aug 2007
17 kopparapu S.R. (tinku) 27 27 48 0 48 3501 02 Aug 2007
18 Асташов А.В. (Anton_A) 26 26 45 0 45 3714 03 Aug 2007
19 Verizhnikova S.I. (Svetix123) 19 30 44 0 44 2866 01 Aug 2007
20 Emi (profundo) 25 28 44 0 44 3368 03 Aug 2007
21 Долголев Г.Г. (Dol) 18 31 42 0 42 2904 30 Jul 2007
22 t A.A. (undersun) 22 23 34 6 40 3273 01 Aug 2007
23 Жеребьёв П.А. (r0pbIHbI4-TheSnaKe) 24 24 40 0 40 4031 03 Aug 2007

Изучаем SQL

Мастерская XML - FOR XML PATH

Jacob Sebastian (оригинал: XML Workshop - FOR XML PATH )
Перевод Моисеенко С.И.

Аннотация

Быстро становящийся экспертом по SQL Server XML, Jacob Sebastian предлагает нам новую большую статью, которая продолжает его очень популярную серию по XML в SQL Server. На сей раз он исследует опцию FOR XML PATH, которая обеспечивает дополнительные возможности форматирования.

Введение

В последних 2 выпусках по обработке XML, мы видели различные примеры чтения и генерации XML-данных. Если Вы пропустили два последних выпуска, то можете найти их здесь.

1. Расширенная обработка XML
Здесь приводятся несколько примеров, которые генерируют данные XML, используя ключевые слова FOR XML. Статья демонстрирует использование режимов AUTO и RAW.

2. Дополнительные примеры расширенныой обработки XML
В этой статье приводится несколько примеров, которые демонстрируют извлечение значений из переменной XML или столбца типа XML.

Сейчас мы рассмотрим примеры обработки XML, используя режим PATH. Я предпочел бы, чтобы Вы сначала прочитали предыдущую статью, в которой приводится несколько примеров, использующих режимы RAWи AUTO.

FOR XML PATH

Режимы RAW и AUTO достаточно хороши для большинства требований к форматированию XML. Режим PATH обеспечивает несколько дополнительных возможностей форматирования, которые мы исследуем с помощью приведенных ниже примеров.

Пример 1: Генерация иерархии узлов XML < >

/*
Используя режим PATH, вы можете генерировать иерархию узлов XML. Генерация XML управляется АЛИАСОМ столбца. В приведенном ниже примере создается новый узел <item>, который содержит "ItemNumber" и "Quantity". Обратите внимание на слэш ("/"), используемый в имени столбца, который фактически управляет генерацией XML.
*/

SELECT
        OrderNumber AS 'orderNumber',
        ItemNumber AS 'item/itemNumber',
        Qty AS 'item/Quantity'
FROM OrderDetails FOR XML PATH('orderInfo'), TYPE, ELEMENTS, ROOT('order')

 

Результат: &lt;order&gt; &lt;orderInfo&gt; &lt;orderNumber&gt;00001&lt;/orderNumber&gt; &lt;item&gt; &lt;itemNumber&gt;A001&lt;/itemNumber&gt; &lt;Quantity&gt;10&lt;/Quantity&gt; &lt;/item&gt; &lt;/orderInfo&gt; &lt;orderInfo&gt; &lt;orderNumber&gt;00001&lt;/orderNumber&gt; &lt;item&gt; &lt;itemNumber&gt;A002&lt;/itemNumber&gt; &lt;Quantity&gt;20&lt;/Quantity&gt; &lt;/item&gt; &lt;/orderInfo&gt; &lt;/order&gt;

Пример 2: Генерация списка значений

/*
Мы только что видели, как ключевое слово PATH может быть использовано для реструктуризации XML, сгенерированного с помощью FOR XML. Давайте теперь рассмотрим несколько других сценариев, когда ключевое слово PATH оказывается полезным.
Одной из ситуаций, когда ключевое слово PATH может оказаться полезным, является создание списка значений. Следующий запрос возвращает список номеров продукции (Item Numbers) из таблицы OrderDetails.

*/

SELECT
        ItemNumber AS 'data()'
FROM
        OrderDetails
FOR XML PATH('')

 

Результат: A001 A002 A003

/*
Заметьте, что данный запрос возвращает результаты в виде значения с разделителями-пробелами. Большую часть времени мы работаем со значениями, разделенными ЗАПЯТЫМИM, а не пробелами. Поэтому давайте посмотрим, как сгенерировать список с запятыми в качестве разделителей.
Нет прямого способа сделать это. Однако мы можем выполнить маленький трюк. Взгляните на следующий пример

*/

SELECT
        ',' + ItemNumber AS 'data()'
FROM
        OrderDetails
FOR XML PATH('')

 

Результат: ,A001 ,A002 ,A003

/*
Хорошо, мы почти добились успеха. Одно плохо, - наша строка начинается с ЗАПЯТОЙ. Давайте воспользуемся функцией STUFF для ее удаления. Вот окончательный запрос.
*/

SELECT STUFF(
        (SELECT
                ',' + ItemNumber AS 'data()'
        FROM
                OrderDetails
        FOR XML PATH('')),1,1,'')

 

Результат: A001 ,A002 ,A003

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

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

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

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

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

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

Контакты

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

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

В избранное