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

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


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

Выпуск 351 от 18 июня 2011 г.

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

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

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

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

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


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

§ Автор добавил замечание к задаче 67.

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

Топик  Сообщений
253 (SELECT) 23
149 (SELECT) 14
778  12
Guest's book 10
780  9

 

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

Автор  Число сообщений
orange  23
$erges   17
anddros   14
powietrzny 5
herrRo   4

 

§ Изменения среди лидеров (решенные за неделю задачи третьего этапа):
2. herrRo (253)
19. orange (147, 149)

§ Новые лица в ТОР 100 и вернувшиеся туда:
99. __Sai (задач 124, время 227.954)

§ Продвинулись в рейтинге:
87. Zin4uk Vadim 129, 96.771)
88. bubala (128, 35.467)
90. Tverdokhlib (127, 72.186)
91. +railgun3r+ (127, 113.002)
100. Yasha123 (123, 29.949)

§ Продвижение ближайших претендентов на попадание в ТОР 100:
105. Эльга (122, 844.829)
107. SergLK (120, 134.155)
139. OPM (120, 343.384)
148. Tenyva (107, 890.840)
181. Dmitry Varenikov (101, 126.425)

§ На этой неделе сертифицированы:
Тимур (A11089734) [BK] - г. Ижевск, Россия

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

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

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

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

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

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

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

No Person Number of
Sel_ex
Last_Sel Number of
DML_ex
Scores Days Days_2 Days_3 S_3 LastSolved LastVisit
1Сальников С.А. ($erges)117917623421118210.3199.3281042011-05-232011-06-17
2Кузнецов В.С. (herrRo)217925323421932462.84156.7591042011-06-152011-06-17
3Креславский О.М. (Arcan)1179176234211572155.893110.9451042011-05-222011-06-17
4Бежаев А.Ю. (Baser)117917623421383138.726129.4601042011-05-222011-06-17
5Карасёва Н.В. (vlksm)1179176234211842162.481131.3901042011-05-272011-06-17
6Шиндин А.В. (AlShin)117525223412928409.285780.7681022011-05-052011-05-21
7Дубинский А.В. (_yizraor)11743623410554279.789355.290972011-05-252011-06-13
8Курочкин П.А. (qwrqwr)617517623409556156.62696.754922011-05-202011-06-05
9Дроздков А.Н. (anddros)517212023401109710.8539.900842011-05-312011-06-17
10Держальцев В.А. (MadVet)3165100223842067144.053101.307842010-12-292011-01-20
11Зотов П.Г. (Ozzy)116894233931163214.606190.282802011-06-012011-06-17
12Тарасов Д.Б. (Gavrila)9167155233882107111.40967.757762011-06-072011-06-16
13Орлов М.В. (Eagleoff)1116115823376797109.12877.855722011-06-082011-06-17
14Бойко Д.М. (Angellore)81631602337912341135.363246.250712010-12-272011-06-10
15Яцук А.А. (Faust_zp)114465223441093121.89689.835692010-02-012010-05-22
16Умрихина Е.В. (Umrikhina)1142672333594941.38843.454562010-11-292011-04-13
17Dvoryaninov V. (Валдай)1716117523366694302.433314.204522011-06-012011-06-17
18Мурашкин И.В. (lepton)1114162212661706122.879636.879422010-11-232010-12-03
19Свиридов К.Ю. (orange)1915114923346125462.92331.081382011-06-152011-06-17
20Сенкевич С.В. (GreyC)111422127739357.70023.321382009-10-072010-01-01

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

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1Антохин А.В. (artemus)146418375544117 Jun 2011
2Васяева Н.А. (V_Natali)2323331952148615 Jun 2011
3Холтыгин С.А. (vavilen)114518264467017 Jun 2011
4>Виноградов И.Н. (Mammoth)5316364285417 Jun 2011
5Калинин К.А. (kalinin_k)173223184183513 Jun 2011
6>Зименко В.Ф. (alan1)19443003063117 Jun 2011
7>Блинков С.А. (enoize)15322302383617 Jun 2011
8Шабан (ShaM@n)01501818176115 Jun 2011
9Sarraf P. (Pooya)1111718304015 Jun 2011
10Ямиев А.Н. (hellgym)0
01717317217 Jun 2011
11Иванов И.И. (Nilud)0
01717317316 Jun 2011
12Лобанов И.Д. (CyberWind)0
01717317417 Jun 2011
13Чебыкин Д.Н. (GriGrim)8881601627117 Jun 2011
14>Титовский П.С. (kli3ma)7891501526017 Jun 2011
15Арсланов Т.Р. (Tимур)8681501540217 Jun 2011
16>Сидоров А.В. (OPM)51201401413917 Jun 2011
17Khusainov B. (Bulat91)0
01313
17 Jun 2011
18>Ляховецкий В. (Sevolod)6761301334217 Jun 2011
19>Жуков С.М. (__Sai)4124120129917 Jun 2011
20>hajshgjhag (adcsdccv)72410212116317 Jun 2011

Изучаем SQL

Реляционное деление и SQL

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

Рассмотрим следующую задачу.

Определить производителей, которые выпускают модели всех типов (схема "Компьютерная фирма").

Ключевым словом здесь является "всех", т.е. производитель в таблице Product должен иметь модели каждого типа, т.е. и PC, и Laptop, и Printer. Как раз для решения подобных задач в реляционную алгебру Коддом была введена специальная операция реляционного деления (DIVIDE BY).

С помощью этой операции наша задача решается очень просто [1]:
Product[maker, type] DIVIDE BY Product[type]

Здесь квадратными скобками обозначается операция взятия проекции на соответствующие атрибуты.

Операция реляционного деления избыточна, т.е. она может быть выражена через другие операции реляционной алгебры. Возможно, поэтому ее нет в языке SQL. На примере решения сформулированной задачи я хочу показать несколько приемов реализации операции реляционного деления на языке SQL.

Группировка

Если использовать тот факт, что, согласно описанию предметной области, типов продукции всего три, то мы можем выполнить группировку по производителю и подсчитать количество уникальных типов. Затем мы отберем только тех производителей, у которых это число равно трем.

Итак,

SELECT maker
FROM Product
GROUP BY maker
HAVING COUNT(distinct type) = 3;

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

SELECT maker
FROM Product
GROUP BY maker
HAVING COUNT(DISTINCT type) = (SELECT COUNT(DISTINCT type) FROM Product);
Читать далее...

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

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

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

§ Все статьи, публикуемые в рассылке, затем выкладываются на сайте Книги и статьи по SQL.

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

Контакты

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

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

В избранное