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

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


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

Выпуск 413 от 25 августа 2012 г.

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

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

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

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

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


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

§ qwrqwr усилил проверку задач 64 (SELECT, рейтинг) и 24 (SELECT, обуч.).

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

Топик		Сообщений
70 (SELECT)	10
137 (SELECT)	7
194 (SELECT)	7
779		7
64 (SELECT)	5

 

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

Автор		Число сообщений
qwrqwr  	8
anddros  	8
Sfinks		8
Pegoopik  	7
Baser  		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
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

 

§ Изменения среди лидеров (решенные за неделю задачи третьего этапа):
23. xLiSPirit (192)
37. railgun3r (253)
38. alex_v (166)
44. Yury Egorov (156)

§ Одна задача до третьего этапа осталась:
92. Дмитрий Гринкевич (задач 141, время 24.781)

§ Продвинулись в рейтинге:
97. timka__s (135, 4.550)

§ Продвижение ближайших претендентов на попадание в ТОР 100:
109. mensch (127, 31.046)
114. IrishkaS (124, 139.994)
185. simulacrum (114, 241.036)
187. andrew495 (99, 16.802)
205. Aprilfire (99, 2.417)

§ На этой неделе сертифицированы:
tarasenkov (A12127406) [BK] - г. Днепропетровск, Украина
sava81 (A12064798) [BK] - г. Харьков, Украина

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

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

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

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

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

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

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

Лучшие результаты (ТОР 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)120715924501812150.630132.3091502012-07-222012-08-24
2Курочкин П.А. (qwrqwr)1207194244991000214.063142.3931472012-08-062012-08-24
3Креславский О.М. (Arcan)1206302244952003207.912154.3131432012-07-272012-08-24
4Сальников С.А. ($erges)120430224490163213.66611.0071382012-08-152012-08-24
5Карасёва Н.В. (vlksm)120391244892246184.252142.2081382012-07-072012-08-24
6Яцук А.А. (Faust_zp)1202255244851985144.361108.8401342012-07-122012-07-30
7Кузнецов В.С. (herrRo)1187104234441170481.44173.3351212012-02-082012-02-16
8Boiko D. (Angellore)8192992445418011987.0251013.2661112012-07-162012-08-19
9Дубинский А.В. (_yizraor)118517224437987632.3701036.688992012-07-312012-08-14
10Шиндин А.В. (AlShin)116425223400928408.971777.457992011-05-052011-05-21
11Тарасов Д.Б. (Gavrila)918032234222428151.52899.710942012-04-232012-05-25
12Дроздков А.Н. (anddros)518517624435154011.50210.329922012-08-162012-08-24
13Орлов М.В. (Eagleoff)9167-323398952138.580106.466912011-11-102012-08-24
14Зотов П.Г. (Ozzy)116523233921412214.074187.364812012-02-052012-08-21
15Держальцев В.А. (MadVet)3154100223722073143.70099.698812010-12-292011-09-26
16Филиппкин Д.В. (_dimon_)1617625724403129588.85458.434622012-08-072012-08-24
17Калинин К.А. (kalinin_k)161711692339039927.25836.659602012-06-302012-08-19
18Умрихина Е.В. (Umrikhina)1131672332294941.27643.454562010-11-292011-09-29
19Dvoryaninov V. (Валдай)16167131233781068321.632329.316552012-06-092012-07-10
20Мурашкин И.В. (lepton)111090212652188131.482645.720512012-03-202012-06-04

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

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1>Боровиков С.С. (СтасW)83313415481124 Aug 2012
2>Hotskyy B. (Bohdan Hotskyy)284742042109724 Aug 2012
3>Тарасенков А.В. (tarasenkov)20723603637824 Aug 2012
4>K A.A. (andrew495)13993203218724 Aug 2012
5>Трохимик Д. (LisperWhisper)15792843233824 Aug 2012
6Жигалов А.А. (Coldsnap)1418181432149122 Aug 2012
7>Терентьев (teralter)19633103176924 Aug 2012
8>Тарарака Ю.В. (Скулекс)11512829149424 Aug 2012
9Kryuchkov S. (SergoK)14662402444124 Aug 2012
10Шагапова Р. (IrishkaS)01240232311424 Aug 2012
11Гумницкий М.Е. (Efemid)0
02222295423 Aug 2012
12>Salvador R.M. (RafaelMSalvador)2221921299524 Aug 2012
13>Евсеев Д.В. (DerFroG)8921901924524 Aug 2012
14BAGHASHVILI G. (JUZEPE)12411718166723 Aug 2012
15Рябцева Е. (EugeniaR)121317118314024 Aug 2012
16>Рябов А.А. (ryab777)121214317325324 Aug 2012
17Манухин С.С. (SaintLordS)0
01717329823 Aug 2012
18>Иванова М. (BlackTigra)101814014130024 Aug 2012
19Новицький Н.П. (Николка)0
01414349823 Aug 2012
20Борзов В.В. (simulacrum)41141201218523 Aug 2012
21>Barna A. (Aneka)6581101155724 Aug 2012
22>Кучеров А.В. (kchr)526741195524 Aug 2012
23Olkhovsky R. (radiotalks.ua)3205611180921 Aug 2012
24Кузьмин В.А. (Sinbamen)0
01111384322 Aug 2012

Изучаем SQL

Целочисленное деление

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

Иногда недоумение у начинающих работать с SQL Server вызывают результаты подобных запросов:

select 1/3 as a, 5/3 as b

Одни (подозреваю, что это пользователи MySQL или Oracle) ожидают результаты типа

a      b
0.3333 1.6667

т.е. вещественное число, другие -

a      b
0      2

т.е. округления к ближайшему целому. В то время как SQL Server дает

a       b
0	1

Чтобы развеять это недоумение скажу, что операция "/" просто обозначает целочисленное деление (а именно, дает в результате неполное частное), если операнды являются целыми числами. Т.е. отдельного обозначения для этой операции нет, и используется символ "обычного" деления. Если же вы хотите получить десятичное число, то нужно привести хотя бы один операнд к вещественному типу явно (первый столбец) или неявно (второй столбец):

select cast(1 as dec(12,4))/3 as a, 5./3 as b

a		b
0.333333	1.666666

Операция получения остатка от деления в SQL Server обозначается "%":

select 1 % 3 as a, 5 % 3 as b

a	b
1	2

Теперь что касается некоторых других СУБД.

PostgreSQL ведет себя аналогично SQL Server.

В MySQL для получения неполного частного используется специальный оператор div:

select 1 div 3 as a, 5 div 3 as b;

Остаток от деления можно также получить в стиле а-ля Паскаль:

select 1 mod 3 as a, 5 mod 3 as b;

Хотя будет работать и "общепринятое"

select 1 % 3 as a, 5 % 3 as b;

В Оракл вообще нет операции для получения неполного частного, поэтому результат деления

select 1/3 as a, 5/3 as b from dual;

a					b
 .333333333333333	1.66666666666667

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

select ceil(1/3) as a, ceil(5/3) as b from dual;

a	b
1	2
или так
select floor(1/3) as a, floor(5/3) as b from dual;

a	b
0	1

Для получения остатка от деления в Oracle используется функция MOD:

select mod(1,3) as a, mod(5,3) as b from dual;

Наконец, если делитель равен нулю:

select 1/0 as a;

то MySQL возвращает NULL, в то время как другие рассматриваемые здесь СУБД дают ошибку деления на ноль.

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

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

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

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

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

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

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

Контакты

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

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

В избранное