Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
122
Добавлен:
22.03.2015
Размер:
2.28 Mб
Скачать

Глава 7

1. SELECT onum, snum, amt * .12

FROM Orders;

2. SELECT 'For the city ', city, ', the highest rating is ', ",

MAX (rating)

FROM Customers

GROUP BY city;

3 SELECT rating, cname, cnum

FROM Customers

ORDER BY rating DESC;

4. SELECT odate, SUM (amt)

FROM Orders

GROUP BY odate

ORDER BY 2 DESC;

Глава 8

1. SELECT onum, cname

FROM Orders, Customers

WHERE Customers.cnum = Orders.cnum;

2. SELECT onum, cname, sname

FROM Orders, Customers, Salespeople

WHERE Customers.cnum = Orders.cnum

AND Salespeople.snum = Orders.snum;

3. SELECT cname, sname, comm

FROM Salespeople, Customers

WHERE Salespeople.snum = Customers.snum

AND comm * .12;

4. SELECT onum, comm * amt

FROM Salespeople, Orders, Customers

WHERE rating > 100

AND Orders.cnum = Customers.cnum

AND Orders.snum = Salespeople.snum;

Глава 9

1. SELECT first.sname, second.sname

FROM Salespeople first, Salespeople second

WHERE first.city = second.city

AND first.sname < second.sname;

Псевдонимам нет необходимости иметь именно такие имена.

2. SELECT cname, first.onum, second.onum

FROM Orders first, Orders second, Customers

WHERE first.cnum = second.cnum

AND first.cnum = Customers.cnum

AND first.onum < second.onum;

Ваш вывод может иметь некоторые отличия, но в вашем ответе все логи-

ческие компоненты должны быть такими же.

3. SELECT a.cname, a.city

FROM Customers a, Customers b

WHERE a.rating = b.rating

AND b.cnum = 2001;

Глава 10

1. SELECT *

FROM Orders

WHERE cnum =

(SELECT cnum

FROM Customers

WHERE cname = 'Cisneros');

или

SELECT *

FROM Orders

WHERE cnum IN

(SELECT cnum

FROM Customers

WHERE cname = 'Cisneros');

2. SELECT DISTINCT cname, rating

FROM Customers, Orders

WHERE amt >

(SELECT AVG (amt)

FROM Orders)

AND Orders.cnum = Customers.cnum;

3. SELECT snum, SUM (amt)

FROM Orders

GROUP BY snum

HAVING SUM (amt) >

(SELECT MAX (amt)

FROM Orders);

Глава 11

1. SELECT cnum, cname

FROM Customers outer

WHERE rating =

(SELECT MAX (rating)

FROM Customers inner

WHERE inner.city = outer.city);

2. Решение с помощью соотнесенного подзапроса:

SELECT snum, sname

FROM Salespeople main

WHERE city IN

(SELECT city

FROM Customers inner

WHERE inner.snum < > main.snum);

Решение с помощью объединения:

SELECT DISTINCT first.snum, sname

FROM Salespeople first, Customers second

WHERE first.city = second.city

AND first.snum < > second.snum;

Соотнесенный подзапрос находит всех заказчиков не обслуживаемых данным

продавцом и выясняет: живет ли кто-нибудь из их в его городе. Решение

с помощью обьединения является более простым и более интуитивным. Оно

находит случаи где поля city совпадают, а поля snums нет. Следователь-

но обьединение является более изящным решением для этой проблемы, чем

то которое мы исследовали до этого. Имеется еще более изящное решение

с помощью подзапроса, с которым Вы столкнетесь позже.

Соседние файлы в папке Базы данных