ЗНАЕТЕ ЛИ ВЫ?

Тема. Операторы IN, BETWEEN, LIKE, IS NULL. Вычисление итоговых значений с помощью агрегатных функций.



1. Составьте два запроса, которые выводят все заказы, полученные 3 или 4 октября 2000 г.

2. Напишите запрос, который выводит всех покупателей, чьи имена начинаются на буквы с A по G.

3. Напишите запрос, который выбирает всех покупателей, чьи имена начинаются на букву C (как заглавную, так и строчную).

4. Составьте запрос, который выбирает все заказы с нулями или NULL в столбце amt (amount).

 

5. Напишите запрос, который подсчитывает число заказов, сделанных 3 октября.

6. Напишите запрос, который подсчитывает количество различных непустых значений столбца city в таблице Customers.

7. Составьте запрос, который выбирает наименьший заказ каждого покупателя.

8. Напишите запрос, который выбирает первого покупателя (в алфавитном порядке), чье имя начинается на букву G.

9. Напишите запрос, который выбирает наибольший рейтинг в каждом городе.

10. Составьте запрос, который подсчитывает, сколько продавцов ежедневно получает заказы. (Продавец, получающий в день более одного заказа, должен учитываться только один раз.)

 

Тема: Работа с выражениями

§ Использование выражений в предложении SELECT

§ Более сложные применения выражений

§ Упорядочение результатов по значениям столбцов

1. Предположим, что каждый продавец имеет 12% комиссионных. Напишите запрос к таблице Orders, который выводит номер заказа, номер продавца и размер комиссионных для данного заказа.

2. Напишите запрос к таблице Customers, который ищет максимальный рейтинг в каждом городе. Выведите данные в формате:For the city (city), the highest rating is: (rating).

3. Cоставьте запрос, который перечисляет покупателей в порядке убывания рейтинга. Выведите сначала столбец rating, а затем имя и номер покупателя.

4. Напишите запрос, который подсчитывает общую сумму заказов за каждый день и располагает результаты в порядке убывания.

5. Cоставьте запрос, который для всех покупателей из Парижа заменяет город на Брюссель, а для остальных покупателей оставляет в списке их настоящие города.

6. Напишите оператор UPDATE, который увеличивает рейтинг всех покупателей на 100. Предполагается, что покупатели могут иметь рейтинг NULL, в этом случае он должен стать 100.

 

Тема: Запросы к нескольким таблицам

· Соединение таблиц

· Соединение таблицы с собой

· Более сложные применения соединений

1. Напишите запрос, который выводит номер каждого заказа вместе с именем покупателя, сделавшего этот заказ.

2. Cоставьте запрос, который показывает всех покупателей, обслуживаемых продавцом с комиссионными более 12%. Выведите имя покупателя, имя продавца и комиссионные продавца.

3. Напишите запрос, который рассчитывает комиссионные продавца от каждого заказа покупателей, имеющих рейтинг выше 100.

4. Напишите запрос, который выводит все пары продавцов, живущих в одном городе. Исключите комбинации продавца с самим собой, а также строки, в которых значения повторяются в обратном порядке.

5. Cоставьте запрос, который выводит имена и города всех покупателей, имеющих тот же рейтинг, что и покупатель Hoffman. Используйте в запросе номер покупателя Hoffman, а не его рейтинг, чтобы запрос можно было применять и при изменении рейтинга.

6. С какой целью в запрос включен последний предикат (a.cnum < b.cnum)? SELECT sname, Salespeople.snum, a.cname, b.cname FROM Customers a, Customers b, Salespeople WHERE a.snum = b.snum AND Salespeople.snum = a.snum AND a.cnum < b.cnum;

 

Тема: Вложенные запросы

· Работа подзапросов

· Подзапросы и соединения

· Коррелированные подзапросы

 

1. Напишите запрос, в котором для получения всех заказов покупателя Cisneros используется подзапрос. Предполагается, что номер этого покупателя (cnum) неизвестен.

2. Cоставьте запрос для вывода имен и рейтингов всех покупателей, сделавших заказы на сумму выше средней по всем заказам.

3. Напишите запрос, который выводит общую стоимость заказов для тех продавцов, у которых эта сумма превышает стоимость самого крупного заказа в таблице.

4. Запишите оператор SELECT с коррелированным подзапросом, который выбирает имена и номера всех покупателей с рейтингами, равными максимальному рейтингу для данного города.

5. Cоставьте два запроса для вывода имен и номеров всех продавцов, в чьих городах есть покупатели, которых они не обслуживают. В одном запросе должно использоваться соединение, а в другом - коррелированный подзапрос. Какое решение более элегантно? (Указание: один из способов решения этой задачи заключается в том, чтобы найти всех покупателей, которые не обслуживаются данным продавцом, а затем проверить, находится ли кто-то из них в его городе).

 

Тема: Объединение запросов

§ Объединение множества запросов в один

§ Использование UNION с ORDER BY

§ Другие способы объединения запросов

1. Создайте объединение двух запросов, которое показывает имена, города и рейтинги всех покупателей. Сведения о тех из них, кто имеет рейтинг 200 и выше, должны сопровождаться словами «High Rating», а об остальных - словами «Low Rating». NULL-рейтинги считаются низкими (Low».

2. Напишите оператор, который выводит имена и номера всех продавцов и покупателей с более чем одним текущим заказом. Расположите результаты в алфавитном порядке.

3. Сформируйте объединение трех запросов. Первый должен выбирать snum всех продавцов в Сан-Хосе, второй - cnum всех покупателей в Сан-Хосе и третий – onum всех заказов от октября. Сохраните повторяющиеся значения в двух последних запросах, но исключите их дублирование с данными первого запроса. (Замечание: в приведенных таблицах-примерах такая избыточность отсутствует, поскольку snum, cnum и onum лежат в разных диапазонах (кстати, это полезный прием). Тем не менее данное упражнение послужит задачей на сообразительность_.

4. Напишите объединенный запрос, который находит всех продавцов из Лондона, имеющих в Лондоне как минимум одного покупателя.
Выведите номера и имена продавцов.

5. Составьте объединенный запрос, который находит всех продавцов с хотя бы одним заказом свыше $1000, сделанным покупателем из другого города. Выведите snum и cnum. Продавцы, имеющие такие заказы от нескольких покупателей, должны отображаться более одного раза.





Последнее изменение этой страницы: 2017-01-25; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.234.255.5 (0.006 с.)