Задачи по SQL
Таблицы данных для всех задач
Таблица Salespeople (продавцы)
snum – уникальный номер, назначенный каждому продавцу (“номер служащего”); sname – имя продавца; city – расположение продавца (город); comm – комиссионные продавцов в десятичной форме.
Таблица Customers (заказчики)
cnum – уникальный номер назначенный каждому заказчику; cname – имя заказчика; city – расположение заказчика (город); rating – код, указывающий уровень предпочтения данного заказчика перед другими. Более высокий номер указывают на большее предпочтение (рейтинг); snum – номер продавца, назначенного этому заказчику (из таблицы Продавцов)
Таблица Orders (заказы)
onum – уникальный номер данный каждому приобретению; amt – значение суммы приобретений; odate – дата приобретения; cnum – номер заказчика делающего приобретение (из таблицы Заказчиков); snum – номер продавца продающего приобретение (из таблицы Продавцов)
Условия задач
-
Напишите команду SELECT, которая бы вывела номер заказа, сумму, и дату для всех строк из таблицы Заказов.
-
Напишите запрос, который вывел бы все строки из таблицы Заказчиков, для которых номер продавца равен 1001.
-
Напишите запрос, который вывел бы таблицу со столбцами в следующем порядке: city, sname, snum, comm.
- Напишите команду SELECT которая вывела бы оценку (rating), сопровождаемую именем каждого заказчика в San Jose.
-
Напишите запрос, который вывел бы значения snum всех продавцов в текущем порядке из таблицы Заказов без каких бы то ни было повторений
-
Напишите запрос, который отображает все заказы со значениями суммы выше чем $1,000.
-
Напишите запрос, который находит sname и city для всех продавцов в Лондоне с комиссионными выше 0.1.
-
Напишите запрос к таблице Заказчиков для отображения всех заказчиков с рейтингом не более 100, если они не находятся в Риме.
- Что будет выведено в результате запроса:
1234SELECT *FROM OrdersWHERE (amt < 1000 OR NOT (odate = '2015-03-10' AND cnum > 2003 )); - Что будет выведено в результате запроса:
1234SELECT *FROM OrdersWHERE NOT ((odate = '2015-03-10' OR snum > 1006) AND amt > = 1500 ); - Как можно проще переписать запрос:
1234SELECT snum, sname, city, commFROM SalespeopleWHERE ( comm > + .12 OR comm < .14 ); - Напишите два запроса которые могли бы вывести все заказы за 3 или 4 Октября 2015.
- Напишите запрос который выберет всех заказчиков обслуживаемых продавцами Peel или Motika.
- Напишите запрос, который может вывести всех заказчиков, чьи имена начинаются с буквы попадающей в диапазон от A до G.
- Напишите запрос который выберет всех пользователей чьи имена начинаются с буквы C.
- Напишите запрос который выберет все порядки имеющие нулевые значения или NULL в поле amt (сумма).
- Напишите запрос, который сосчитал бы все суммы приобретений на 3 Октября.
- Напишите запрос, который сосчитал бы число различных не-NULL значений поля city в таблице Заказчиков.
- Напишите запрос, который выбрал бы наименьшую сумму для каждого заказчика.
- Напишите запрос, который бы выбирал заказчиков в алфавитном порядке, чьи имена начинаются с буквы G.
- Напишите запрос, который выбрал бы высшую оценку в каждом городе.
- Напишите запрос, который сосчитал бы число заказчиков, регистрирующих каждый день свои заказы. (Если продавец имел более одного заказа в данный день, он должен учитываться только один раз.)
- Предположим что каждый продавец имеет 12% комиссионных. Напишите запрос к таблице заказов, который мог бы вывести номер заказа, номер продавца, и сумму комиссионных продавца для этого заказа.
- Напишите запрос к таблице Заказчиков который мог бы найти высшую оценку в каждом городе. Вывод должен быть в такой форме: For the city [city], the highest rating is: [rating].
- Напишите запрос, который выводил бы список заказчиков в нисходящем порядке. Вывод поля оценки (rating) должен сопровождаться именем заказчика и его номером.
- Напишите запрос, который бы вывел список номеров заказов, сопровождающихся именем заказчика, который создавал эти заказы.
- Напишите запрос, который бы выдавал имена продавца и заказчика для каждого заказа после номера заказа.
- Напишите запрос, который бы выводил всех заказчиков, обслуживаемых продавцом с комиссионными выше 12%. Выведите имя заказчика, имя продавца и ставку комиссионных продавца.
- Напишите запрос, который вычислил бы сумму комиссионных продавца для каждого заказа заказчика с оценкой выше 100.
- Напишите запрос, который бы вывел все пары продавцов, живущих в одном и том же городе. Исключите комбинации продавцов с ними же, а также дубликаты строк, выводимых в обратным порядке
- Напишите запрос, который вывел бы все пары порядков по данным заказчикам, именам этих заказчиков, и исключал дубликаты из вывода, как в предыдущем вопросе.
- Напишите запрос, который вывел бы имена (cname) и города (city) всех заказчиков с такой же оценкой (rating) как у Hoffmanа. Напишите запрос, использующий поле cnum Hoffmanа, а не его оценку, так чтобы оно могло быть использовано, если его оценка вдруг изменится.
- Напишите запрос, который бы использовал подзапрос для получения всех заказов для заказчика с именем Cisneros. Предположим, что вы не знаете номера этого заказчика, указываемого в поле cnum.
- Напишите запрос, который вывел бы имена и оценки всех заказчиков, которые имеют усредненные заказы.
- Напишите запрос, который бы выбрал общую сумму всех приобретений в порядках для каждого продавца, у которого эта общая сумма больше, чем сумма наибольшего заказа в таблице.
- Напишите команду SELECT, использующую подзапрос, которая выберет имена и номера всех заказчиков с максимальными для их городов оценками.
- Напишите два запроса, которые выберут всех продавцов (по их имени и номеру) которые, в своих городах имеют заказчиков, которых они не обслуживают. Один запрос — с использованием объединения и один — с подзапросом.
смотрите еще серию задач 43 задачи по SQL