Задачи по SQL Часть 2 из 3

Задачи по SQL

sql

 

Часть 1   Часть 2  Часть 3

Таблицы данных для всех задач

Таблица Salespeople (продавцы)

SQL

snum - уникальный номер, назначенный каждому продавцу ("номер служащего"); sname - имя продавца; city - расположение продавца (город); comm - комиссионные продавцов в десятичной форме.

Таблица Customers (заказчики)

SQL база

cnum - уникальный номер назначенный каждому заказчику; cname - имя заказчика; city - расположение заказчика (город); rating - код, указывающий уровень предпочтения данного заказчика перед другими. Более высокий номер указывают на большее предпочтение (рейтинг); snum - номер продавца, назначенного этому заказчику (из таблицы Продавцов)

Таблица Orders (заказы)

задачи SQL

onum - уникальный номер данный каждому приобретению; amt - значение суммы приобретений; odate - дата приобретения; cnum - номер заказчика делающего приобретение (из таблицы Заказчиков); snum - номер продавца продающего приобретение (из таблицы Продавцов)

Условия задач 

  1. Напишите запрос который бы использовал оператор EXISTS для извлечения всех продавцов, которые имеют заказчиков с оценкой 300.

  2. Напишите запрос, использующий оператор EXISTS, который выберет всех продавцов с заказчиками, размещенными в их городах, которые ими не обслуживаются.
  3. Напишите запрос, который извлекал бы из таблицы Заказчиков каждого заказчика, назначенного к продавцу, который в данный момент имеет по крайней мере еще одного заказчика (кроме заказчика которого вы выберете) с заказами в таблице Заказов.
  4. Напишите запрос, который бы выбирал всех заказчиков, чьи оценки равны или больше, чем какая-нибудь (ANY) оценка заказчика Serres.
  5. Напишите запрос, использующий ANY или ALL, который бы находил всех продавцов, которые не имеют никаких заказчиков, размещенных в их городе.
  6. Напишите запрос, который бы выбирал все заказы с суммой больше, чем любая из сумм для заказчиков в Лондоне.
  7. Напишите предыдущий запрос с использованием MAX.
  8. Создайте объединение из двух запросов, которое показало бы имена, города, и
    оценки всех заказчиков. Те из них, которые имеют поле rating=200 и более, должны, кроме того, иметь слова "Высокий Рейтинг", а остальные должны иметь слова "Низкий Рейтинг".
  9. Напишите команду, которая бы вывела имена и номера каждого продавца и каждого заказчика, которые имеют больше чем один текущий заказ. Результат представьте в алфавитном порядке.
  10. Сформируйте объединение из трех запросов. Первый выбирает поля snum всех продавцов в San Jose; второй, поля cnum всех заказчиков в San Jose; и третий поля onum всех порядков на 3 Октября. Сохраните дубликаты между последними двумя запросами, но устраните любую избыточность вывода между каждым из их и самым первым.
  11. Напишите команду, которая бы поместила следующие значения, в указанном порядке, в таблицу Продавцов: city — San Jose, name — Bianco, comm — NULL, cnum — 1100.
  12. Напишите команду, которая бы удалила все заказы заказчика Clemens из таблицы Заказов.
  13. Напишите команду, которая бы увеличила оценку всех заказчиков в Риме на 100.
  14. Продавец Serres оставил компанию. Переназначьте его заказчиков продавцу Motika.
  15. Предположите, что имеется таблица, называемая Multicust, с такими же именами столбцов, что и таблица Продавцов. Напишите команду, которая бы вставила всех продавцов (из таблицы Продавцов) имеющих более чем одного заказчика в эту таблицу.
  16. Напишите команду, которая бы удаляла всех заказчиков, не имеющих текущих заказов.
  17. Напишите команду которая бы увеличила на двадцать процентов комиссионные всех продавцов, имеющих общие текущие заказы выше чем $3,000.
  18. Напишите команду CREATE TABLE, которое бы вывело  таблицу Заказчиков.
  19. Напишите команду, которая бы давала возможность пользователю быстро извлекать заказы, сгруппированные по датам из таблицы Заказов.
  20. Создайте индекс, который бы разрешал каждому продавцу быстро отыскивать его заказы, сгруппированные по датам.
  21. Предположим, что каждый продавец имеет только одного заказчика с данной оценкой, введите команду которая его извлечет.
  22. Создайте таблицу Заказов так, чтобы все значения поля onum, а также все комбинации полей cnum и snum отличались друг от друга, и так чтобы значения NULL исключались из поля даты.
  23. Создайте таблицу Заказов так, чтобы комиссионные, по умолчанию составляли 10%, не разрешались значения NULL, чтобы поле snum являлось первичным ключом, и чтобы все имена были в алфавитном порядке между A и M включительно (учитывая, что все имена будут напечатаны в верхнем регистре).
  24. Создайте таблицу Заказов, считая, что поле onum больше, чем поле cnum, а cnum больше, чем snum. Запрещены значения NULL в любом из этих трех полей.
  25. Создайте таблицу с именем Cityorders. Она должна содержать такие же поля onum, amt, и snum что и таблица Заказов, и такие же поля cnum и city, что и таблица Заказчиков, так что порядок каждого заказчика будет вводиться в эту таблицу вместе с его городом. Поле оnum будет первичным ключом Cityorders. Все поля в Cityorders должны иметь ограничения при сравнении с таблицами Заказчиков и Заказов. Допускается, что родительские ключи в этих таблицах уже имеют соответствующие ограничения.
  26. Переопределите таблицу Заказов следующим образом: добавьте новый столбец с именем prev, который будет идентифицирован для каждого порядка, поле onum предыдущего порядка для этого текущего заказчика. Выполните это с использованием внешнего ключа ссылающегося на саму таблицу Заказов. Внешний ключ должен ссылаться также на поле cnum заказчика, обеспечивающего определенную предписанную связь между текущим порядком и ссылаемым.

смотрите еще серию задач 43 задачи по SQL