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

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


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

Выпуск 715 от 16 июня 2018 г.

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

SQL Exercises

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

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

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

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


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

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

Топик		Сообщений
17 (Learn)	2
46 (Learn)	2
78 (Learn)	2
152 (SELECT)	2
8 (Learn)	1

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

Programmizm	6
bysidby		6
corea_sql	5
Creeed		2
selber  	2

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

Задача	Дата		Автор
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
222	2018-02-14	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

§ Изменения среди лидеров (решенные за неделю задачи третьего этапа):
11. mcrain (157)
64. MontaG (140)

§ Продвижение ближайших претендентов на попадание в ТОР 100 (число задач, время решения в днях):
133. hard (138, 482.491)
141. Lesha.V (126, 65.583)
148. pavel1211 (126, 59.576)
151. anyman1979 (121, 9.454)
175. Пусев_Денис (110, 17.792)
213. freespoken (108, 738.421)
215. kattiks (99, 46.460)
272. Zealdequar (98, 45.055)

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

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

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

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

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

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

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

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

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

No Person Number of
Sel_ex
Last_Sel Number of
DML_ex
Scores Days Days_2 Days_3 S_3 LastSolved LastVisit
1Красовский Е.А. (pegoopik)1264227346492851210.25414.1242402018-04-282018-06-14
2Костомаров А.В. (al29)1252953162422144128.3412266.8982402018-05-182018-06-14
3Креславский О.М. (Arcan)1263229346464090273.280214.6142372018-04-142018-06-14
4Boiko D. (Angellore)12632283364538465236.4073825.1402372018-02-202018-03-23
5Бежаев А.Ю. (Baser)1262227346432924201.513178.8212342018-05-042018-05-06
6Дубинский А.В. (_velial)12593073463730932797.3933371.3762282018-05-032018-06-14
7Карасёва Н.В. (vlksm)1259225346334354290.336241.6822242018-04-152018-05-05
8Курочкин П.А. (qwrqwr)1255223346213078255.904164.3922122018-04-152018-06-15
9Вязовецков А.С. (alex_v)9240161235634361177.45294.1962052018-05-172018-05-17
10Филиппкин Д.В. (_dimon_)1244115295972737194.554127.9092022016-07-202016-09-29
11Дощенко В.Н. (mcrain)112291573456724421973.915459.0921982018-06-092018-06-13
12Movlyanov A.P. (Oct)7244102958813072353.7232448.8471932017-01-232017-04-03
13Сальников С.А. ($erges)122720625551253317.50514.4981812015-02-022018-01-23
14Кукушкин С.А. (smog)92251632952723681054.5621122.1811532017-10-032018-05-11
15Яцук А.А. (Faust_zp)1186255244591984144.150108.8401372012-07-122012-07-30
16Кузнецов В.С. (herrRo)1171260234181167478.51173.3351222012-02-082013-06-18
17Гринкевич Д.Л. (Дмитрий Гринкевич)1320410274672059367.128932.3431092017-05-312018-05-22
18Дроздков А.Н. (anddros)51921624445224412.34111.0911082014-07-212015-01-29
19Зайцев В.С. (Sleeping)192091842746036011040.0531327.686992018-04-172018-04-19
20Шиндин А.В. (AlShin)114725223366928408.505777.457992011-05-052014-05-18

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


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

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1>Сорокин Д.Ю. (cth)17633003069715 Jun 2018
2Михаленков С.В. (black_horse)14512602689615 Jun 2018
3>Агирре Кордова А.К. (Cordova)6751301344015 Jun 2018
4Лазарук Р.А. (EsUs228)9912517434415 Jun 2018
5Савин А.Ю. (mirovingin)6801201240114 Jun 2018
6>Петренко М.М. (Diaboliko)101512012430615 Jun 2018
7Василевская Е.А. (kattiks)5991101121513 Jun 2018
8Чуканов В.С. (VSC)45880878315 Jun 2018
9Карпов Е.А. (Fish-Goga)88808560814 Jun 2018
10Сальников С. (SergRand)88808565614 Jun 2018
11Закирьянова А. (AnaZak)77707583012 Jun 2018
12>Шошкин Р. (ROM303)445712310415 Jun 2018
13German (o4karik88)47505543314 Jun 2018
14Nesterkin A. (nestam)3342731317014 Jun 2018
15Колесников (hard)213840413313 Jun 2018
16Osin (anyman1979)112140415115 Jun 2018
17Юрин Д.И. (Diman9425)234404206214 Jun 2018
18>Пупкин (hangry)45404311315 Jun 2018

Изучаем SQL

Агрегация строк. Функция STRING_AGG

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

Рассмотрим такую задачу.

Перечислить через запятую все корабли из таблицы Ships, которые принадлежат Японии.

Получить список кораблей Японии труда не составляет:

SELECT name FROM Ships s JOIN Classes c ON s.class=c.class
WHERE country='Japan'
ORDER BY name;

В MySQL есть замечательная агрегатная функция GROUP_CONCAT, которая решает поставленную задачу:

SELECT GROUP_CONCAT(name) ships_list FROM Ships s JOIN Classes c ON s.class=c.class
WHERE country='Japan'
ORDER BY name;

ships_list
haruna,hiei,kirishima,kon,musashi,yamato

По умолчанию в качестве разделителя как раз используется запятая, хотя мы можем выбрать любой символ.

Если выполнить группировку, то легко получить список кораблей для каждой страны:

SELECT country, GROUP_CONCAT(name) ships_list FROM Ships s JOIN Classes c ON s.class=c.class
GROUP BY country
ORDER BY country, name;

country ships_list
gt.britain	renown,repulse,resolution,ramillies,revenge,royal oak,royal sovereign
japan	haruna,hiei,kirishima,kongo,musashi,yamato
usa	iowa,missouri,new jersey,wisconsin,north carolina,south dakota,washington,california,tennessee

Для SQL Server решение нашей задачи можно получить менее естественным способом - через представление результата выборки в форме XML:

SELECT STUFF(
(SELECT ','+name AS 'data()' FROM Ships s JOIN Classes c ON s.class=c.class
WHERE country='Japan'
ORDER BY name FOR XML PATH('')
),1,1,'');

Группировка по стране еще добавит сложности. Но мы не будем этого делать, поскольку в SQL Server, начиная с версии 2017, появилась функция STRING_AGG, позволяющая конкатенировать строки. Эта функция имеет два обязательных аргумента - строковое выражение, которое и будет использоваться для сцепления, и разделитель.

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

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

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

§ В настоящее время для решения упражнений на сайте используются следующие СУБД: SQL Server 2012 Express, Oracle 11g Express Edition, MariaDB-10.2.13 (совместима с MySQL 8), PostgreSQL 10.3.

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

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

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

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

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

Контакты

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

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

В избранное