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

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


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

Выпуск 430 от 22 декабря 2012 г.

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

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

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

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

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


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

§ Подлатал проверку задачи 70 (SELECT, обуч.) в ответ на сообщение Ivanova E N.

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

Топик		Сообщений
47 (SELECT)	5
41 (SELECT)	4
120 (SELECT)	4
170 (SELECT)	4
5 (SELECT)	3

 

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

Автор		Число сообщений
qwrqwr  	6
Ashton  	6
Pegoopik  	5
Ло Вао Шу	4
D.M.		3

 

§ Объявленные конкурсы по оптимизации запросов

Задача	Дата		Автор
147	2012-02-23	$erges
159	2012-07-25	anddros
170	2011-07-15	qwrqwr
182	2012-02-16	Baser
192	2012-03-03	Baser
259	2012-07-23	anddros

 

Дополнительные неоптимизационные конкурсы

Задача	Дата		Автор/Организатор конкурса
71	2010-12-26	anddros (завершен).
88	2012-07-12	crescent/Pegoopik
91	2012-05-31	smog/$erges
121	2012-07-06	ZrenBy/anddros
153	2010-09-21	Ozzy

 

§ Изменения среди лидеров (решенные за неделю задачи третьего этапа):
13. _dimon_ (149, 184)
41. Дмитрий Гринкевич (186)

§ Продвижение ближайших претендентов на попадание в ТОР 100:
109. IrishkaS (132, 145.031)
115. Эс-Кью-Эль (127, 25.866)
117. frosten (125, 43.920)
118. WY (124, 11.967)
134. aronov.oleg (118, 312.251)
178. Ashton (102, 28.677)
193. Aprilfire (104, 2.996)

§ На этой неделе сертифицированы:
Alexiel1976 (A12125035) [BK] - г. Москва, Россия
Pegoopik (A12069553) [BK] - г. Новосибирск, Россия

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

Число упражнений:
   на обучающем этапе - 100;
   на рейтинговых этапах - 194;
   DML - 24
   головоломки - 7 (отрицательные номера) + 9 (3 этап).

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

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

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

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

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

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

No Person Number of
Sel_ex
Last_Sel Number of
DML_ex
Scores Days Days_2 Days_3 S_3 LastSolved LastVisit
1Бежаев А.Ю. (Baser)121012224504869150.859132.3091502012-09-172012-12-21
2Курочкин П.А. (qwrqwr)1210159245041126218.132146.4651502012-12-102012-12-21
3Креславский О.М. (Arcan)1210194245042091213.488159.8481502012-10-232012-12-21
4Карасёва Н.В. (vlksm)1210194245042375206.979164.8301502012-11-132012-12-21
5Сальников С.А. ($erges)120612224492174613.74311.0071382012-12-072012-12-21
6Яцук А.А. (Faust_zp)1203255244861985144.342108.8401342012-07-122012-07-30
7Кузнецов В.С. (herrRo)1188104234451170481.42973.3351212012-02-082012-02-16
8Boiko D. (Angellore)8193992445518011986.9311013.2661112012-07-162012-12-20
9Дубинский А.В. (_yizraor)1188122244411088718.8231122.9071012012-11-052012-11-25
10Шиндин А.В. (AlShin)116425223400928408.951777.457992011-05-052011-05-21
11Дроздков А.Н. (anddros)518817824442156011.92510.760982012-09-052012-11-10
12Тарасов Д.Б. (Gavrila)918132234232428151.50499.710942012-04-232012-05-25
13Филиппкин Д.В. (_dimon_)13190149244421430125.23873.776922012-12-202012-12-21
14Орлов М.В. (Eagleoff)9168-323399952138.572106.466912011-11-102012-12-21
15Зотов П.Г. (Ozzy)116623233931412214.018187.364812012-02-052012-08-21
16Держальцев В.А. (MadVet)3154100223722073143.68199.698812010-12-292011-09-26
17Калинин К.А. (kalinin_k)161711692339039927.24136.659602012-06-302012-12-09
18Умрихина Е.В. (Umrikhina)1132672332394941.27143.454562010-11-292012-10-26
19Dvoryaninov V. (Валдай)16168131233791068321.606329.316552012-06-092012-12-20
20Мурашкин И.В. (lepton)111090212652188131.475645.720512012-03-202012-11-23

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

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1ГТА (Timur13)2223739216121 Dec 2012
2Соколов Н. (ChemiKadze)204532032123120 Dec 2012
3>Бережной А.А. (Bereg85)212529029104221 Dec 2012
4>Климентов С.В. (Эс-Кью-Эль)111272802811521 Dec 2012
5>Сапего В.В. (qwerty13)17572602659621 Dec 2012
6>Панфиленко И.Ф. (Stoik_)16532502565521 Dec 2012
7>Аронов О. (aronov.oleg)81182202213421 Dec 2012
8Динисилов А.С. (Alexiel1976)13662102148717 Dec 2012
9Колобов И. (SQL Ape)161621021321020 Dec 2012
10Ковальчук В. (valkov)11712002042521 Dec 2012
11>Жура А.В. (alex_z)13592002057621 Dec 2012
12>Агапов В. (KERBEROS)7138190197421 Dec 2012
13Bodaev M. (Nakeshi)5128917292721 Dec 2012
14Бабалян К. (Dezzan)0
01717361620 Dec 2012
15Сапунов М.А. (Exquid)0
01717361720 Dec 2012
16>Шувалов В.А. (Ло Вао Шу)10521601684021 Dec 2012
17Разинский В.Д. (Filinowl)1111516369519 Dec 2012
18>Ханхасаев Р.В. (Икерес)8631401481321 Dec 2012
19Островский А.А. (aleost)62710313143521 Dec 2012
20>Kaminski R. (robkam)6891201228821 Dec 2012
21>Кротенок К. (Stupid_Mouse)8351201288121 Dec 2012

Изучаем SQL

Первый день недели

Моисеенко С.И.

Задача. Определить дату, на которую выпал первый понедельник января 2013 года.

При некоторых предположениях решить эту задачу можно следующим образом:

WITH num(n) AS(/* с помощью рекурсивного CTE создаем таблицу со столбцом n и значениями от 0 до 6 */
SELECT 0
UNION ALL
SELECT n+1 FROM num
WHERE n <  6),
dat AS (/* создаем таблицу с датами от 1 до 7 января 2013 года */
SELECT DATEADD(dd,  n,  CAST('2013-01-01' AS DATE)) AS day FROM num
)
SELECT day FROM dat  WHERE DATEPART(dw, day) = 1; /* выбираем день, соответствующий первому дню недели */

Предположение, о котором говорилось выше, состоит в том, что первым днем недели считается понедельник. Однако если вы выполните этот запрос на сайте sql-ex.ru, то получите

day
2013-01-06

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

WITH num(n) AS(
SELECT 0
UNION ALL
SELECT n+1 FROM num
WHERE n <  6),
dat AS (
SELECT DATEADD(dd,  n,  CAST('2013-01-01' AS DATE)) AS day FROM num
)
SELECT day FROM dat  WHERE DATENAME(dw, day) = 'monday';

day
2013-01-07

Теперь правильно, но будет ли этот запрос всегда верен, если "зашить" его в код приложения? Ответ - нет. Если я поменяю языковые настройки:

 SET LANGUAGE russian;
то получу пустой набор строк, поскольку в этом случае последнюю строку запроса следовало бы написать так
 SELECT day FROM dat  WHERE DATENAME(dw, day) = N'понедельник';

Функция @@DATEFIRST

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

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

§ В настоящее время для решения упражнений на сайте используются следующие СУБД: SQL Server 2008 R2 Express, Oracle 11g Express Edition, MySQL 5, PostgreSQL 9.

§ Группа SQL Exercises на LinkedIn.com. Присоединяйтесь!

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

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

§ Книги и статьи по SQL.

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

Контакты

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

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

В избранное