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

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


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

Выпуск 618 от 06 августа 2016 г.

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

SQL Exercises

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

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

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

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


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

§ В ответ на сообщение Artem57 усилена проверка задачи 85 (SELECT, обуч.этап).

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

Топик		Сообщений
60 (Learn)	10
38 (Learn)	6
101 (SELECT)	6
51 (Learn)	5
182 (SELECT)	5

 

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

Автор		Сообщений
pegoopik  	17
Eurinho		15
_velial  		14
selber  		12
KAPMAH1		5

 

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

Задача	Дата		Автор
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
197	2014-11-06	pegoopik
214	2015-06-24	pegoopik
259	2012-07-23	anddros

 

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

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

 

§ Изменения среди лидеров (решенные за неделю задачи третьего этапа):
10. Pegoopik (161)
12. _velial (182, 183, 184, 187)
40. Sysa (156)

§ Продвижение ближайших претендентов на попадание в ТОР 100 (число задач, время решения в днях):
119. selber (148, 508.530)
124. _Olga24 (138, 59.471)
152. HandKot_ (129, 2247.454)
175. demkse (116, 617.456)
176. Inderdikt (115, 42.476)
182. wqer (124, 58.843)

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

Число упражнений:
   на обучающем этапе - 133;
   на рейтинговых этапах - 219;
   DML - 29
   головоломки - 16 (отрицательные номера) + 10 (3 этап).

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

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

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

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

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

Лучшие результаты (ТОР 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)1251305296143452255.058198.5062162016-07-152016-08-05
2Карасёва Н.В. (vlksm)1249219286063631274.647226.4842122016-04-222016-07-31
3Бежаев А.Ю. (Baser)124535265902066182.532160.0262062015-12-282016-08-05
4Филиппкин Д.В. (_dimon_)1247305296002737194.629127.9092022016-07-202016-08-02
5Boiko D. (Angellore)1243452858832153630.6091928.9881962016-05-302016-07-13
6Курочкин П.А. (qwrqwr)1245305295932447250.345159.3151952016-07-232016-08-03
7Movlyanov A.P. (Oct)72433052958311181993.8532077.7201872016-07-182016-08-05
8Сальников С.А. ($erges)123020625554253317.54514.4981812015-02-022016-07-11
9Костомаров А.В. (al29)92011882849315131453.5341039.6601442016-06-162016-08-04
10>Красовский Е.А. (pegoopik)9225161295382220204.7938.6831402016-08-052016-08-01
11Яцук А.А. (Faust_zp)1189255244621984144.172108.8401372012-07-122012-07-30
12>Дубинский А.В. (_velial)12141872952524572573.3493148.5301312016-08-052016-08-05
13Кукушкин С.А. (smog)921445274921829950.7841059.9751242016-04-122016-07-28
14Кузнецов В.С. (herrRo)1174260234211167478.53373.3351222012-02-082013-06-18
15Гринкевич Д.Л. (Дмитрий Гринкевич)1320645274691652367.312932.3431092016-04-192016-08-05
16Дроздков А.Н. (anddros)51951624448224412.44211.0911082014-07-212015-01-29
17Шиндин А.В. (AlShin)115025223369928408.527777.457992011-05-052014-05-18
18Вязовецков А.С. (alex_v)15179187234083246123.41342.620972015-04-282015-06-05
19Тимофеева Е.В. (Umrikhina)120719529479301050.37647.237962016-07-212016-08-05
20Тарасов Д.Б. (Gavrila)916715233962427151.37299.710952012-04-232012-05-25

TOP 10 по оптимизации запросов


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

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1Климов Д.В. (WelikeSQLPsy)22822830135105 Aug 2016
2Воронова (fenwick)0
02323368203 Aug 2016
3Пупкин (xender1)0
02323368305 Aug 2016
4I (VadimI)7701752244102 Aug 2016
5yup T.X. (demonxy)0
01919405005 Aug 2016
6Mirsadikov M.M. (MIrilyas)0
01717423631 Jul 2016
7>Vasiliy (Qra)141516016420805 Aug 2016
8>Пронина (Nnet)5591301363605 Aug 2016
9mutyanov (mutya)0
01212439104 Aug 2016
10>Дубинский А.В. (_velial)4214100101205 Aug 2016

Изучаем SQL

Функция EOMONTH

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

Как узнать последний день месяца по заданной дате, например, текущего месяца?

Текущую дату мы можем узнать, используя встроенную функцию current_timestamp:

select current_timestamp;

Чтобы узнать последний день предыдущего месяца, мы можем от текущей даты отнять номер текущего дня месяца, т.е. количество дней, прошедших от начала месяца:

select dateadd(dd, -day(current_timestamp), current_timestamp);

Тогда для текущего месяца нам потребуется предварительно добавить один месяц к текущей дате:

select dateadd(dd, -day(dateadd(mm, 1, current_timestamp)), dateadd(mm, 1, current_timestamp));

Уберем, наконец, из полученного результата компоненту времени:

select cast(dateadd(dd, -day(dateadd(mm, 1, current_timestamp)), dateadd(mm, 1, current_timestamp)) as date);

В SQL Server 2012 появилась функция EOMONTH, которая позволяет сделать то же самое без применения "процедурной" логики:

select cast(dateadd(dd, -day(dateadd(mm, 1, current_timestamp)), dateadd(mm, 1, current_timestamp)) as date) old_way,
eomonth(current_timestamp) new_way;

Мы уже знаем, что функция OFMONTH имеет аргументом выражение типа даты. Кроме того, функция имеет также второй (необязательный) целочисленный аргумент, представляющий число месяцев, которые, при наличии, будут добавлены к дате, представленной первым аргументом. Например, следующий запрос даст нам последние дни предыдущего, текущего и следующего месяца для даты '2016-01-28':

select eomonth('2016-01-28',-1) prev_month, eomonth('2016-01-28') this_month, eomonth('2016-01-28', 1) next_month

prev_month	this_month	next_month
2015-12-31	2016-01-31	2016-02-29

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

§ Вы можете купить футболку или кружку с логотипом сайта.

§ В настоящее время для решения упражнений на сайте используются следующие СУБД: SQL Server 2012 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"

В избранное