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

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


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

SQL Exercises

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

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

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

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

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


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

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

§ Произошло давно обещанное обновление форума.
Теперь можно редактировать и удалять свои сообщения. Появилась возможность быстрого ответа с цитированием. При этом цитируется предварительно выделенный фрагмент или все сообщение, если нет выделения.
Экономьте! :-).
Старая возможность публикации сохраняется. В быстром ответе можно использовать те же псевдотеги, что и в обычном ответе, но набирать их придется руками.
Должно работать под IE, Opera и Mozilla.
Если заметите баги, сообщайте.

§ Еще один участник добрался до третьего этапа - IAS56. После долгих мучений со 138-ой задачей взята и 139-я (время на третьем этапе 3.655).
Gavrila решал пропущенные задачи (.513).

§ Новые лица в сотне и вернувшиеся в нее:
Schummi (задач 120, время 36.729)
Katy_Ekb (116, 2.614)
Moiseenko (117, 54.410)

§ Продвинулись в рейтинге:
=Maxim= (137, 25.122)
azavyalov1 (119, 43.501)
maar (119, 40.579)

§ На этой неделе сертифицированы:
Nekrott (A07017015) [BK] (г.Москва, Россия)
ambal (A07016684) [BK] (г.Москва, Россия)

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

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

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

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

Лучшие результаты (ТОР 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) 142 142 21 341 36 4.912 .655 14 08 Apr 2007 02 Jul 2007
2 Солдатенков Ю.С. (SolYUtor) 142 142 21 341 320 17.807 2.695 14 03 Apr 2007 08 May 2007
3 Шептунов П.П. (PavelPS) 142 142 21 341 119 8.145 3.499 14 25 Apr 2007 27 Jun 2007
4 Мурашкин И.В. (lepton) 142 142 21 341 371 15.737 5.539 14 29 Mar 2007 29 Jun 2007
5 Карасёва Н.В. (vlksm) 142 142 21 341 389 31.344 5.912 14 30 May 2007 05 Jul 2007
6 Мальцев А.В. (Палкин) 142 142 21 341 310 27.974 7.690 14 23 Jun 2007 02 Jul 2007
7 Голубин Р.С. (Roman S. Golubin) 142 142 21 341 588 55.391 34.203 14 29 Mar 2007 03 Jul 2007
8 Агапов В. (KERBEROS) 138 141 20 330 89 6.163 1.262 11 20 Nov 2006 09 Apr 2007
9 Кувалкин К.С. (Cyrilus) 141 141 20 336 901 12.541 2.519 11 14 May 2007 03 Jul 2007
10 Зверев Д.Л. (dimzv) 138 141 20 330 1141 9.294 4.938 11 19 Dec 2006 22 Dec 2006
11 Войнов П.Е. (pаparome) 141 142 21 337 616 2.765 .049 10 02 May 2007 29 Jun 2007
12 Тарасов Д.Б. (Gavrila) 139 140 21 332 678 20.360 .513 7 05 Jul 2007 06 Jul 2007
13 Васьков Е.В. (Johan) 140 140 21 334 253 12.786 11.402 7 29 Mar 2007 16 Jun 2007
14 Валуев Д.И. (Fiolent) 139 140 20 329 1345 117.088 62.302 4 11 May 2007 22 Jun 2007
15 Юлдашев М.Р. (Snowbear) 139 139 21 330 642 4.132 .000 3 21 Apr 2007 06 Jul 2007
16 Креславский О.М. (Arcan) 139 139 21 330 67 9.932 .315 3 07 Apr 2007 06 Jul 2007
17 Держальцев В.А. (MadVet) 135 139 20 321 540 34.190 3.085 3 08 Oct 2006 19 Oct 2006
18 Любченко В.А. (IAS56) 139 139 21 330 304 160.325 3.655 3 05 Jul 2007 06 Jul 2007
19 Палий С.А. (PS_Sergey) 136 139 20 322 212 15.704 4.188 3 01 Dec 2006 03 Dec 2006
20 Солопов А.Н. (15th) 138 138 21 327 125 16.082 .000 0 25 Apr 2007 06 Jul 2007

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

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1 >Рябицкий Е.Е. (vru010) 62 62 114 34 148 517 06 Jul 2007
2 Zolotyh (Guy) 60 60 112 32 144 556 06 Jul 2007
3 >Холманский И.В. (John Hi) 52 52 99 0 99 1310 06 Jul 2007
4 >Володченко Е. (Orbie) 48 48 89 0 89 1567 06 Jul 2007
5 Шорохова Ю.В. (YOUlik) 35 35 65 23 88 1598 05 Jul 2007
6 >Лясковский В.Л. (Dared to dream) 42 42 77 9 86 1644 06 Jul 2007
7 >Пивовар М.Ю. (Turkish) 35 35 63 15 78 1850 06 Jul 2007
8 >Шум Ш.Ш. (Shumka) 36 36 68 0 68 2246 06 Jul 2007
9 >pet Z. (zy) 36 36 67 0 67 2287 06 Jul 2007
10 Tull J. (Jethro Tull) 33 33 62 0 62 2503 04 Jul 2007
11 >Черников А.А. (Dervisch) 33 33 60 0 60 2619 06 Jul 2007
12 >королёва А. (bolk) 32 32 57 3 60 2620 06 Jul 2007
13 >Яковлевич Д.И. (Dimayk) 31 31 51 9 60 2627 06 Jul 2007
14 >Truntov A. (Jesteridze) 32 32 59 0 59 2660 06 Jul 2007
15 >Шпагина О. (Teslyta) 30 30 55 3 58 2738 06 Jul 2007
16 Levy Y. (Yevgeny.Levy) 31 31 57 0 57 2823 06 Jul 2007
17 >Петрова В. (verochka) 27 27 47 9 56 2870 06 Jul 2007
18 >Кривошеина В.Н. (povitrulya) 30 30 53 3 56 3113 06 Jul 2007
19 >Погосян А.Л. (ARTI) 15 54 36 16 52 881 06 Jul 2007
20 >TBAP (_TBAP_) 29 29 52 0 52 3163 06 Jul 2007
21 clark B.C. (brianc) 29 29 52 0 52 3167 01 Jul 2007
22 >К Д.П. (Nerve) 27 27 46 0 46 3622 06 Jul 2007
23 Tytar V. (fore-man) 26 26 44 1 45 3710 05 Jul 2007
24 >Burago D. (kristobald) 17 43 35 8 43 1648 06 Jul 2007
25 Бобровский (Artem B) 21 28 42 0 42 3405 05 Jul 2007
26 >Куликов Д. (CDuke1) 25 25 40 0 40 4018 06 Jul 2007

Изучаем SQL

Новые возможности T-SQL в SQL Server 2005 - Часть 1/3 (окончание, начало в вып.143)

Kevin S. Goff, Microsoft MVP (оригинал: Take Five with SQL Server 2005: New T-SQL Capabilities in SQL Server 2005 - Part 1 of 3 )
Перевод Моисеенко С.И.

3 - TOP N

SQL Server 2000 трактует N в операторах SELECT TOP N как литерал. Разработчики, которым требовалось выполнить оператор SELECT TOP N, чтобы вернуть первые N строк, вынуждены были использовать динамический SQL (или использовать оператор ROWCOUNT), если величина N являлась переменной. Примером может служить приложение, позволяющее конечному пользователю задавать значение N в процессе его выполнения (например, показать 10-ку лучших по продажам или 5-ку по доходам и т.д.).

Теперь SQL Server 2005 трактует N как числовую переменную, позволяя разработчикам указывать ее в круглых скобках. Так, если мы хотим вернуть 5 (10 и т.д) первых заказов при сортировке по убыванию для величины заказа (Order Amount), то можем поступить следующим образом:

use northwind
DECLARE @nTop int
SET @nTop = 5
Select TOP (@nTop) customerid, oh.orderid, (unitprice * quantity) as amount
from orders OH
join [dbo].[Order Details] OD on oh.orderid = od.orderid
order by Amount Desc

Вы можете задать TOP (N) PERCENT, а также использовать необязательное предложение WITH TIES, чтобы вернуть дополнительные строки с тем же самым значением в выражении ORDER BY.

TOP (N) может даже являться результатом вычисления некоторой функции или выражением, которое возвращает целое число. Например, следующий запрос вернет первые 3 строки из таблицы Orders при сортировке по столбцу Freight в порядке убывания, поскольку в таблице Shippers имеется только три строки:

SELECT TOP( SELECT COUNT(*) FROM SHIPPERS) *
FROM ORDERS ORDER BY Freight DESC

Наконец, Вы можете применить функциональность TOP (N) к операторам INSERT и UPDATE. Это особенно полезно при выполнении специальной обработки промежуточных результирующих наборов. Следующий код создает табличную переменную с тремя строками, и применяет оператор UPDATE для обновления первых двух строк. Затем код создает вторую табличную переменную и вставляет туда первые две строки из первой табличной переменной.

DECLARE @nTop int
SET @nTop = 2

DECLARE @tTest1 TABLE ( Amount decimal(10,2))
INSERT INTO @ttest1 VALUES ( 100)
INSERT INTO @ttest1 VALUES ( 200)
INSERT INTO @ttest1 VALUES ( 300)

UPDATE TOP(@nTop) @tTest1 SET Amount = Amount * 10

DECLARE @tTest2 TABLE ( Amount decimal(10,2))
INSERT TOP(2) @tTest2 SELECT * FROM @tTest1 order by amount

SELECT * FROM @ttest2

 

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

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

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

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

Контакты

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

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

В избранное