Всем здравствуйте, может кто подсказать как написать два небольших запроса?
1. Вывести полный список городов и для каждого города найти суммарное количество деталей красного цвета, которые были в него поставлены. Города в списке должны быть ВСЕ. Список должен быть упорядочен по алфавиту.
Что я смог сделать - вывести два столбца: в первом - изделия, во втором их количество.
1. 2. 3. 4. 5. 6. 7. 8. 9.
SELECT n_izd,SUM(kol)
FROM spj
WHERE n_det IN
(
SELECT n_det
FROM p
WHERE p.cvet='Красный'
)
GROUP BY n_izd
2. Увеличить рейтинг всех поставщиков, имеющих в настоящее время рейтинг меньше, чем у поставщика S5, на величину равную умноженному на 2 числу выполненных поставщиком поставок.
Что я смог сделать - вывести два столбца: в первом - поставщики, во втором удвоенное количество поставок каждого.
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
SELECT n_post,2*SUM(kol)
FROM spj
WHERE n_post IN
(
SELECT n_post
FROM s
WHERE reiting <
(
SELECT reiting
FROM s
WHERE s.n_post='s5'
)
)
GROUP BY n_post
Структура и наименование таблиц:
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52.
create table s (n_post char(6) not null,name char(20) not null,reiting integer,town char(20));
create table p (n_det char(6) not null,name char(20) not null,cvet char(20),ves integer,town char(20));
create table j (n_izd char(6) not null,name char(20),town char(20));
create table spj (n_post char(6) not null, n_det char(6) not null, n_izd char(6) not null, kol integer, date date not null);
Insert into "s" values ('s1','Смит',20,'Лондон');
Insert into "s" values ('s2','Джонс',10,'Париж');
Insert into "s" values ('s3','Блейк',30,'Париж');
Insert into "s" values ('s4','Кларк',20,'Лондон');
Insert into "s" values ('s5','Адамс',30,'Афины');
Insert into "p" values ('p1','Гайка','Красный',12,'Лондон');
Insert into "p" values ('p2','Болт','Зеленый',17,'Париж');
Insert into "p" values ('p3','Винт','Голубой',17,'Рим');
Insert into "p" values ('p4','Винт','Красный',14,'Лондон');
Insert into "p" values ('p5','Кулачок','Голубой',12,'Париж');
Insert into "p" values ('p6','Блюм','Красный',19,'Лондон');
Insert into "j" values ('j1','Жесткий диск','Париж');
Insert into "j" values ('j2','Перфоратор','Рим');
Insert into "j" values ('j3','Считыватель','Афины');
Insert into "j" values ('j4','Принтер','Афины');
Insert into "j" values ('j5','Флоппи-диск','Лондон');
Insert into "j" values ('j6','Терминал','Осло');
Insert into "j" values ('j7','Лента','Лондон');
Insert into "spj" values ('s1','p1','j1',200,10/02/2014);
Insert into "spj" values ('s1','p1','j4',700,10/02/2014);
Insert into "spj" values ('s2','p3','j1',400,10/02/2014);
Insert into "spj" values ('s2','p3','j2',200,10/02/2014);
Insert into "spj" values ('s2','p3','j3',200,10/02/2014);
Insert into "spj" values ('s2','p3','j4',500,10/02/2014);
Insert into "spj" values ('s2','p3','j5',600,10/02/2014);
Insert into "spj" values ('s2','p3','j6',400,10/02/2014);
Insert into "spj" values ('s2','p3','j7',800,10/02/2014);
Insert into "spj" values ('s2','p5','j2',100,10/02/2014);
Insert into "spj" values ('s3','p3','j1',200,10/02/2014);
Insert into "spj" values ('s3','p4','j2',500,10/02/2014);
Insert into "spj" values ('s4','p6','j3',300,10/02/2014);
Insert into "spj" values ('s4','p6','j7',300,10/02/2014);
Insert into "spj" values ('s5','p2','j2',200,10/02/2014);
Insert into "spj" values ('s5','p2','j4',100,10/02/2014);
Insert into "spj" values ('s5','p5','j5',500,10/02/2014);
Insert into "spj" values ('s5','p5','j7',100,10/02/2014);
Insert into "spj" values ('s5','p6','j2',200,10/02/2014);
Insert into "spj" values ('s5','p1','j4',100,10/02/2014);
Insert into "spj" values ('s5','p3','j4',800,10/02/2014);
Insert into "spj" values ('s5','p5','j4',400,10/02/2014);
Insert into "spj" values ('s5','p6','j4',500,10/02/2014);
Заранее буду благодарен за помощь.
P.S. Не отказался бы от хороших учебников по SQL с примерами (чем больше чем лучше).
|