Новости сайта "Упражнения по SQL (http://www.sql-ex.ru)" Выпуск 570 от 05 сентября 2015 г. Новым посетителям сайта Сайт посвящен изучению языка, с помощью которого осуществляется взаимодействие с реляционными (и не только) СУБД. Суть обучения состоит в выполнении заданий на написание запросов к учебным базам данных; при этом система контролирует правильность выполнения заданий. В настоящее время реализованы все операторы подъязыка манипуляции данными (DML), которые включают в себя оператор извлечения данных SELECT, а также операторы модификации данных - INSERT, DELETE и UPDATE. Мы надеемся, что справочного материала сайта окажется достаточно для самостоятельного обучения. Кроме того, свои решения вы можете обсудить на форуме сайта. Опытных же специалистов приглашаем проверить (продемонстрировать) свое мастерство и принять участие в соревновании, обеспечиваемом рейтинговой системой учета времени выполнения заданий. Фактически, рейтинг ведется на втором этапе тестирования, который начинается сейчас после решения 11 задач первого этапа. При подсчете рейтинга каждого участника отбрасывается один самый худший показатель среди всех решенных им упражнений. Демонстрация плана выполнения запроса и сравнительная оценка эффективности решений поможет вам освоить принципы оптимизации запросов, которые пригодятся на третьем рейтинговом этапе, который начинается после 138 задачи. Имеется возможность получить сертификат по SQL DML при выполнении определенного количества заданий. Новости сайта § Изменён коэффициент сложности нескольких рейтинговых задач: 16: 1 --> 2 17: 2 --> 3 217: 3 --> 4 § Самые популярные темы недели на форуме Топик Сообщений 123 (Learn) 17 77 (SELECT) 10 777 7 106 (Learn) 6 Guest's book 4 § Авторы недели на форуме Автор Сообщений qwrqwr 11 kipoogep 10 nikz2710s 7 Karahan 7 Orhan229 6 § Объявленные конкурсы по оптимизации запросов Задача Дата Автор 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 121 2012-07-06 ZrenBy/anddros 153 2010-09-21 Ozzy § Изменения среди лидеров (решенные за неделю задачи третьего этапа): Смена лидера! 1. Arcan (217) 10. smog (187) 103. dr.shtopor (140) § Продвижение ближайших претендентов на попадание в ТОР 100 (число задач, время решения в днях): 103. dr.shtopor (142, 269.632) 119. Kazaam (141, 59.834) 130. Эс-Кью-Эль (131, 52.795) 136. Alexander_ttl (127, 263.265) 141. Fomichev (129, 34.468) 154. the_bald (122, 1.709) 210. selber (105, 298.216) § На этой неделе сертифицированы: Schmidt (A15263323) [BK] - г. Москва, Россия § Число подписчиков - 3704 Число упражнений: на обучающем этапе - 130; на рейтинговых этапах - 217; DML - 25 головоломки - 16 (отрицательные номера) + 10 (3 этап). Число участников рейтинга - 12100 Число участников второго этапа - 2749 Число участников третьего этапа - 115 На обучающем этапе - 151515 Сертифицировано на сайте - 711 Лучшие результаты (ТОР 20) TOP 10 по оптимизации запросов Лучшие результаты за неделю No | surname | n_sel | sel_all | sel_scores | dml_scores | scores | rating | last_visit | 1 | Потапенко Е. (potap_) | 0 | 1 | 0 | 31 | 31 | 2807 | 04 Sep 2015 | 2 | Комолов С. (serkkk) | 0 | 2 | 0 | 28 | 28 | 2870 | 04 Sep 2015 | 3 | Лапаев М.А. (Si1entAssass1N) | 18 | 19 | 22 | 0 | 22 | 1411 | 02 Sep 2015 | 4 | Беседина М.В. (tanata) | 0 |
| 0 | 19 | 19 | 3858 | 02 Sep 2015 | 5 | Михалёв А.М. (alexey_mikhalev) | 0 |
| 0 | 19 | 19 | 3859 | 03 Sep 2015 | 6 | Шмидт С.В. (Serg_Vladimirovich) | 9 | 63 | 18 | 0 | 18 | 515 | 04 Sep 2015 | 7 | Tcelykh (THRASH) | 0 |
| 0 | 18 | 18 | 3983 | 04 Sep 2015 | 8 | >Овсянников А.С. (lnl122) | 8 | 82 | 17 | 0 | 17 | 337 | 04 Sep 2015 | 9 | Чаплинский В.А. (Жми кнопку) | 12 | 16 | 14 | 3 | 17 | 3510 | 02 Sep 2015 | 10 | >Виноградова (Tigra1) | 10 | 29 | 16 | 0 | 16 | 2331 | 04 Sep 2015 | 11 | Фёдоров (AstroZomb) | 6 | 8 | 7 | 8 | 15 | 3063 | 04 Sep 2015 | 12 | >Тимофеева Е.В. (Umrikhina) | 8 | 171 | 14 | 0 | 14 | 29 | 04 Sep 2015 | 13 | Borisov R.A. (Heck) | 1 | 1 | 1 | 13 | 14 | 4222 | 03 Sep 2015 | 14 | Aнтонишен (Anastasii25) | 0 |
| 0 | 14 | 14 | 4281 | 03 Sep 2015 | 15 | >shyrik (1shyrik1) | 10 | 14 | 12 | 0 | 12 | 1849 | 04 Sep 2015 | 16 | sirkova J.S. (jenda21) | 0 |
| 0 | 11 | 11 | 4706 | 04 Sep 2015 | 17 | >Щепин Н. (nikz2710s) | 5 | 80 | 10 | 0 | 10 | 305 | 04 Sep 2015 | 18 | >Пустобаев (Иван П.) | 4 | 62 | 10 | 0 | 10 | 870 | 04 Sep 2015 | 19 | Царапкин Д.И. (Tsarapkin) | 5 | 25 | 9 | 0 | 9 | 1192 | 04 Sep 2015 | Изучаем SQL Моисеенко С.И.
Задача. Распределить баллончики по 3-м группам поровну. Группы заполняются в порядке возрастания v_id. Эту задачу решает функция ранжирования NTILE, которая появилась в SQL Server 2008. Эта функция возвращает номер группы, в которую попадает соответствующая строка результирующего набора. SELECT *, NTILE(3) OVER(ORDER BY v_id) gr FROM utv ORDER BY v_id; Параметром функции NTILE является число групп. Остальное вам уже известно. :-) Если мы захотим распределить порознь баллончики каждого цвета, то, как и для других функций ранжирования, можно добавить конструкцию PARTITION BY в предложение OVER: SELECT *, NTILE(3) OVER(PARTITION BY v_color ORDER BY v_id) gr FROM utv ORDER BY v_color, v_id; V_ID V_NAME V_COLOR gr 7 Balloon # 07 B 1 8 Balloon # 08 B 1 9 Balloon # 09 B 1 15 Balloon # 15 B 1 16 Balloon # 16 B 1 19 Balloon # 19 B 1 22 Balloon # 22 B 2 25 Balloon # 25 B 2 26 Balloon # 26 B 2 33 Balloon # 33 B 2 36 Balloon # 36 B 2 39 Balloon # 39 B 2 43 Balloon # 43 B 3 46 Balloon # 46 B 3 47 Balloon # 47 B 3 51 Balloon # 51 B 3 54 Balloon # 54 B 3 4 Balloon # 04 G 1 ... Обратите внимание на группы синего цвета (B). В двух первых группах оказалось по 6 баллончиков, а в третьей только 5. В случае, когда число строк не делится нацело на число групп, функция NTILE помещает в последние группы на одну строку меньше, чем в первые. Наконец, если аргумент функции NTILE окажется больше числа строк, то будет сформировано количество групп, равное числу строк, и в каждой группе окажется по одной строке. Полезная информация § Вы можете купить футболку или кружку с логотипом сайта. § В настоящее время для решения упражнений на сайте используются следующие СУБД: 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. Вы также можете предложить свои задачи для публикации на сайте. |
Комментариев нет:
Отправить комментарий