- •1. Библиотека
- •2. Университет
- •3. Оптовая база
- •4. Производство
- •5. Сеть магазинов
- •6. Авторемонтные мастерские
- •7. Деканат
- •8. Договорная деятельность организации
- •9. Поликлиника
- •10. Телефонная станция
- •11. Спорт
- •12. Сельскохозяйственные работы
- •13. Городской транспорт
- •14. География
- •16. Аэропорт
- •17. Персональные эвм
- •19. Зоопарк
- •20. Шахматы
- •21. Судоходство.
- •22. Научные конференции.
- •23. Программные продукты.
- •24. Операционная система
- •25. Добыча полезных ископаемых
- •26. Автотранспортное предприятие
- •28. Справочная аптек
- •30. Изучение студентами дисциплин по выбору.
10. Телефонная станция
Минимальный список характеристик:
-
Номер абонента, фамилия абонента, адрес, наличие блокиратора, примечание;
-
Код АТС, код района, количество номеров;
-
Номер спаренного телефона абонента, задолженность, дата установки.
Один спаренный номер одной АТС может использоваться несколькими абонентами и один и тот же абонент может использовать телефоны разных АТС.
Выборки:
-
Выбрать пары сблокированных телефонов.
SELECT Номера.Номер_телефона, Count(Номера.Абонент) AS [Count-Абонент] FROM Абоненты INNER JOIN Номера ON Абоненты.Номер_абонента = Номера.Абонент WHERE (((Абоненты.Блокиратор)=Yes)) GROUP BY Номера.Номер_телефона HAVING (((Count(Номера.Абонент))>1));
-
Определить АТС, районы действия которых перекрываются.
Делаем запрос с группировкой по районам. Считаем, сколько АТС приходится на каждый район, если больше одной, то выбираем.
SELECT АТС.[Код района], Count(АТС.Код) AS [Count-Код] FROM АТС GROUP BY АТС.[Код района] HAVING (((Count(АТС.Код))>1));
В следующем запросе выбираем сами АТС. Создаем запрос из таблицы «АТС» и предыдущего запроса. Будем выбирать те записи, код района в которых равен коду района из запроса. И у нас получается список АТС с кодами районов.
SELECT АТС.Код, АТС.[Код района] FROM АТС RIGHT JOIN АТС1 ON АТС.[Код района] = АТС1.[Код района] WHERE (((АТС.[Код района])=[АТС1]![Код района]));
-
Выбрать телефоны группового пользования, Вывести их номера и фамилии абонентов.
Это задание похоже на первое, но осложняется выбором ФИО. Поэтому сделаем его из двух запросов. В первом отберем записи с номерами групповых телефонов (число абонентов на один номер больше единицы).
SELECT Номера.Номер_телефона, Count(Абоненты.Номер_абонента) AS [Count-Номер_абонента] FROM Абоненты INNER JOIN Номера ON Абоненты.Номер_абонента = Номера.Абонент GROUP BY Номера.Номер_телефона HAVING (((Count(Абоненты.Номер_абонента))>1));
Во втором запросе покажем абонентов, чей номер равен номеру телефона из предыдущего запроса:
SELECT Номера.Номер_телефона, Абоненты.ФИО FROM Группа1, Абоненты INNER JOIN Номера ON Абоненты.Номер_абонента = Номера.Абонент WHERE (((Номера.Номер_телефона)=[Группа1]![Номер_телефона]));
-
Выбрать список абонентов АТС 47, имеющих задолженность больше 100 руб.
SELECT Абоненты.ФИО, Номера.Задолженность FROM АТС INNER JOIN (Абоненты INNER JOIN Номера ON Абоненты.Номер_абонента = Номера.Абонент) ON АТС.Код = Номера.АТС WHERE (((Номера.Задолженность)>100) AND ((АТС.Код)=47));
11. Спорт
Минимальный список характеристик:
-
Название вида спорта, единица измерения, мировой рекорд и его дата;
-
ФИО спортсмена, год рождения, команд, спортивный разряд;
-
Наименование соревнования, показанный результат, дата проведения, место проведения.
Один спортсмен может заниматься разными видами спорта.
Выборки:
-
Вывести таблицу распределения мест в соревновании 'открытый чемпионат' в городе 'Киев' по 'шахматам' в 2000 г. SELECT спортсмен.фио, результаты.позиция FROM результаты INNER JOIN спортсмен ON результат.спортсмен_id = спортсмен.id INNER JOIN соревнование ON результаты.соревнование_id = соревнование.id INNER JOIN вид_спорта ON результаты.вид_спорта_id = вид_спорта.id WHERE соревнование.название = 'открытый чемпионат' and соревнование.место_проведения = 'Киев' and вид_спорта.название = 'шахматы' and YEAR(соревнование.дата) = 2000 ORDER BY результаты.позиция
-
Определить спортсменов, которые выступают более чем в 3 видах спорта.
SELECT спортсмен.фио, COUNT(DISTINCT результаты.вид_спорта_id) as count FROM результаты INNER JOIN спортсмен ON результат.спортсмен_id = спортсмен.id INNER JOIN вид_спорта ON результаты.вид_спорта_id = вид_спорта.id GROUP BY результат.вид_спорта_id HAVING count > 3
-
Вывести список спортсменов, превысивших мировые рекорды.
SELECT DISTINCT спортсмен.фио FROM результаты INNER JOIN спортсмен ON результат.спортсмен_id = спортсмен.id INNER JOIN вид_спорта ON результаты.вид_спорта_id = вид_спорта.id WHERE результаты.результат > вид_спорта.рекорд
-
Определить наилучший показатель спортсмена 'Караваев' в виде спорта 'бег'.
SELECT спортсмен.фио, MAX(результаты.результат) AS лучший_результат FROM результаты INNER JOIN спортсмен ON результат.спортсмен_id = спортсмен.id INNER JOIN соревнование ON результаты.соревнование_id = соревнование.id INNER JOIN вид_спорта ON результаты.вид_спорта_id = вид_спорта.id WHERE вид.спорта = 'бег' and спортсмен.фио = 'Караваев' and GROUP BY спортсмен.id