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

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


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

Выпуск 377 от 17 декабря 2011 г.

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

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

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

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

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


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

§ Подлатал проверку задачи 139 (SELECT, рейтинг) данными от qwrqwr.

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

Топик		Сообщений
779		14
Guest's book	5
139 (SELECT)	5
8 (SELECT)	3
77 (Learn)	3

 

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

Автор		Число сообщений
qwrqwr  	7
$erges  	3
Олигзанда	3
kaaandrey	3
frosten  	3

 

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

Задача	Дата		Автор
170	2011-07-15	qwrqwr

 

§ Изменения среди лидеров (решенные за неделю задачи третьего этапа):
9. Gavrila (185)
19. Pegoopik (185)
24. _dimon_ (146)
34. kalinin_k (158, 166)
35. Johan (146)
36. =Maxim= (162)

§ Новые лица в ТОР 100 и вернувшиеся туда:
92. xLiSPirit (задач 133, время 18.772)

§ Продвинулись в рейтинге:
93. risp (133, 19.124)
97. frosten (128, 41.797)

§ Продвижение ближайших претендентов на попадание в ТОР 100:
141. alexi (111, 7.656)
152. Yury Egorov (121, 6.017)
176. VIG (96, 17.099)
196. tvelykyy (99, 30.430)

§ На этой неделе сертифицированы:
xLiSPirit (B11075002) [AR] - г. Екатеринбург, Россия

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

Число упражнений:
   на обучающем этапе - 89;
   на рейтинговых этапах - 185;
   DML - 23.

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

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

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

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

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

Лучшие результаты (ТОР 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)1193185234541767175.582127.2621262011-12-032011-12-16
2Бежаев А.Ю. (Baser)119318623454575143.754134.2311262011-11-282011-12-16
3Карасёва Н.В. (vlksm)1193184234542032172.162140.3541262011-12-032011-12-16
4Курочкин П.А. (qwrqwr)119218523452754200.057139.7341242011-12-042011-12-16
5Яцук А.А. (Faust_zp)1191184234471768139.419104.6171192011-12-082011-12-16
6Кузнецов В.С. (herrRo)1187186234401096480.18871.7971152011-11-262011-12-10
7Сальников С.А. ($erges)118618623437137110.8289.6441092011-11-282011-12-16
8Шиндин А.В. (AlShin)116925223407928409.229780.7681022011-05-052011-05-21
9Тарасов Д.Б. (Gavrila)9180185234202295151.458106.631972011-12-122011-12-15
10Дубинский А.В. (_yizraor)117513323416694281.422355.290962011-10-122011-10-16
11Орлов М.В. (Eagleoff)9174-323407952138.765109.576942011-11-102011-12-16
12Дроздков А.Н. (anddros)517518623409127811.06410.066872011-11-282011-12-13
13Boiko D. (Angellore)81761752340915571789.447860.528842011-11-152011-12-11
14Зотов П.Г. (Ozzy)1169186233981355215.116190.699842011-12-102011-12-16
15Держальцев В.А. (MadVet)3159100223792073143.978101.307842010-12-292011-09-26
16Умрихина Е.В. (Umrikhina)1136672333094941.36843.454562010-11-292011-09-29
17Dvoryaninov V. (Валдай)171606323366838302.638314.204512011-10-232011-12-15
18Мурашкин И.В. (lepton)1109162212621706122.734636.879422010-11-232010-12-03
19Красовский Е.А. (Pegoopik)191631852336850398.9586.029402011-12-102011-12-14
20Свиридов К.Ю. (orange)1914514923341125462.88531.081382011-06-152011-12-02

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

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1>T E.F. (elvira10)28634004075816 Dec 2011
2Ivanov D. (Dmitry_Ivanov)242435035222513 Dec 2011
3Kuvardin E.A. (Zeratulnn)0
03434230216 Dec 2011
4Chursinov (RomanChursinov)4452732235716 Dec 2011
5>Grechukhina E.B. (Glena4)192230030122216 Dec 2011
6Spaskov S.A. (SergeySpaskov)192428028223313 Dec 2011
7>Strojkova (Morkovka)174126026122316 Dec 2011
8Prokhorova M.N. (manya_pro)181825025270612 Dec 2011
9>Mel'nichuk Yu. (yMelnych)152523023179115 Dec 2011
10Starikova K.A. (Starikova)162022022256113 Dec 2011
11Sedova (pchela)131419019140615 Dec 2011
120a1a2a3 4.8. (0a1a2a3)0
01717333915 Dec 2011
13>Shaymardanov M.M. (xLiSPirit)7133160169216 Dec 2011
14>Artamonov D. (artamonov_danil)4451116285316 Dec 2011
15>Sajko D. (DreamCatcher)11261501596316 Dec 2011
16Admiralova A.N. (Admiral)102015015256012 Dec 2011
17Shapovalova A.N. (Lyoncha)0
01515351614 Dec 2011
18>Bazardaruev N.B. (Canta)92714014190216 Dec 2011
19Domashnyaya A. (Alisa Nikolaevna)101014014352912 Dec 2011
20>Kukushkin S.A. (smog)9541301354516 Dec 2011
21>Bakumenko (max12345)444913365015 Dec 2011

Изучаем SQL

Функция DATEPART в MySQL и PostgreSQL

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

MySQL

В MySQL для извлечения каждой составляющей даты имеется соответствующая функция. Так, например, можно получить минуты времени отправления рейсов, которые вылетают в 1-ом часу дня (база данных "Аэропорт"):

Решение 1

select time_out, MINUTE(time_out)
from trip
where HOUR(time_out) = 12;

time_out               min  
1900-01-01 12:35:00    35
1900-01-01 12:00:00     0

Компоненту времени можно также получить при помощи функции EXTRACT. С помощи этой функции решение задачи можно записать в виде:

Решение 2

select time_out, EXTRACT(MINUTE FROM time_out) AS min
from trip
where EXTRACT(HOUR FROM time_out) = 12;

Дополнительно с помощью функции EXTRACT можно получить составные компоненты даты/времени, например, год и месяц. Решим такую задачу.

Посчитать количество окрасок по месяцам с учетом года (база данных "Окраска").

Решение 3

select YEAR(b_datetime) AS y, MONTH(b_datetime) AS m, EXTRACT(YEAR_MONTH FROM b_datetime) AS ym, count(*) AS qty
from utb
group by EXTRACT(YEAR_MONTH FROM b_datetime);

y     m   ym     qty
2000  1  200001  1
2001  1  200101  1
2002  1  200201  1
2002  6  200206  1
2003  1  200301  69
2003  2  200302  7
2003  3  200303  2
2003  4  200304  2
2003  5  200305  2
2003  6  200306  2
Полный список допустимых компонент можно найти, например, здесь.

Замечание

Здесь уместно будет отметить довольно вольную трактовку группировки в MySQL, при которой в списке столбцов предложения SELECT могут присутствовать столбцы с детализированными данными, отсутствующими в предложении GROUP BY. Очевидно, что агрегаты здесь подразумеваются, т.к., в противном случае, отсутствует однозначная интерпретация операции. Предполагаю, что здесь неявно используются функция MIN или MAX, но я даже не буду это специально выяснять, т.к. предпочитаю в подобных случаях следовать стандарту.

PostgreSQL

Функций типа Year, Month и т.д. в PostgreSQL, насколько мне известно, нет. Однако есть функция EXTRACT, и второе решение первой задачи, которое мы написали для MySQL, будет работать и под этой СУБД

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

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

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

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

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

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

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

Контакты

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

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

В избранное