Форум программистов, компьютерный форум, киберфорум
Oracle
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 78
1

Для каждого статуса поставщика посчитать суммарный вес, средний вес и количество уникальных заказных товаров

17.04.2014, 23:20. Показов 1945. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот таблицы
Oracle 11 SQL
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
spool cre_demo.LOG
 
CONNECT demo/demo@ORCL
prompt
prompt Creating TABLE ПОСТАВЩИКИ
prompt =========================
prompt
CREATE TABLE ПОСТАВЩИКИ
(
  КОДП          VARCHAR2(45) NOT NULL,
  ИМЯ           VARCHAR2(900),
  СТАТУС        NUMBER(10),
  ГОРОД         VARCHAR2(720),
  ДАТА_РОЖДЕНИЯ DATE
)
/
COMMENT ON TABLE ПОСТАВЩИКИ IS 'Список поставщиков';
COMMENT ON COLUMN ПОСТАВЩИКИ.КОДП IS 'Код поставщика';
COMMENT ON COLUMN ПОСТАВЩИКИ.ИМЯ IS 'ФИО';
COMMENT ON COLUMN ПОСТАВЩИКИ.СТАТУС IS 'Условный статус';
COMMENT ON COLUMN ПОСТАВЩИКИ.ГОРОД IS 'Город поставщика';
COMMENT ON COLUMN ПОСТАВЩИКИ.ДАТА_РОЖДЕНИЯ IS 'Дата рождения';
ALTER TABLE ПОСТАВЩИКИ
  ADD CONSTRAINT ПОСТ_ПК PRIMARY KEY (КОДП)
/
ALTER TABLE ПОСТАВЩИКИ
  ADD CONSTRAINT ПОСТ_УК UNIQUE (ДАТА_РОЖДЕНИЯ)
  USING INDEX 
/
 
 
prompt
prompt Creating TABLE ТОВАРЫ
prompt =====================
prompt
CREATE TABLE ТОВАРЫ
(
  КОДТ         VARCHAR2(30) NOT NULL,
  НАИМЕНОВАНИЕ VARCHAR2(3000) NOT NULL,
  ЦВЕТ         VARCHAR2(90),
  ВЕС          NUMBER,
  ГОРОД        VARCHAR2(240)
)
/
COMMENT ON TABLE ТОВАРЫ IS 'Список товаров';
COMMENT ON COLUMN ТОВАРЫ.КОДТ IS 'Код товара';
COMMENT ON COLUMN ТОВАРЫ.НАИМЕНОВАНИЕ IS 'Наименование';
COMMENT ON COLUMN ТОВАРЫ.ЦВЕТ IS 'Цвет';
COMMENT ON COLUMN ТОВАРЫ.ВЕС IS 'Вес';
COMMENT ON COLUMN ТОВАРЫ.ГОРОД IS 'Город производителя';
ALTER TABLE ТОВАРЫ
  ADD CONSTRAINT ТОВ_ПК PRIMARY KEY (КОДТ)
/
 
 
prompt
prompt Creating TABLE СТРОКИ_ЗАКАЗА
prompt ============================
prompt
CREATE TABLE СТРОКИ_ЗАКАЗА
(
  КОДП       VARCHAR2(30) NOT NULL,
  КОДТ       VARCHAR2(30) NOT NULL,
  КОЛИЧЕСТВО NUMBER(10) NOT NULL
)
/
COMMENT ON TABLE СТРОКИ_ЗАКАЗА IS 'Строки заказа';
COMMENT ON COLUMN СТРОКИ_ЗАКАЗА.КОДП IS 'Код поставщика';
COMMENT ON COLUMN СТРОКИ_ЗАКАЗА.КОДТ IS 'Код товара';
COMMENT ON COLUMN СТРОКИ_ЗАКАЗА.КОЛИЧЕСТВО IS 'Количество заказанного товара от данного поставщика';
ALTER TABLE СТРОКИ_ЗАКАЗА
  ADD CONSTRAINT СЗ_ПК PRIMARY KEY (КОДП,КОДТ)
/
ALTER TABLE СТРОКИ_ЗАКАЗА
  ADD CONSTRAINT ПОСТ_ВК foreign KEY (КОДП)
  references ПОСТАВЩИКИ (КОДП);
ALTER TABLE СТРОКИ_ЗАКАЗА
  ADD CONSTRAINT ТОВ_ВК foreign KEY (КОДТ)
  references ТОВАРЫ (КОДТ);
 
 
prompt Loading ПОСТАВЩИКИ...
INSERT INTO ПОСТАВЩИКИ (КОДП, ИМЯ, СТАТУС, ГОРОД, ДАТА_РОЖДЕНИЯ)
VALUES ('П1', 'Иванов', 10, 'Ижевск', TO_DATE('05-05-1969', 'dd-mm-yyyy'));
INSERT INTO ПОСТАВЩИКИ (КОДП, ИМЯ, СТАТУС, ГОРОД, ДАТА_РОЖДЕНИЯ)
VALUES ('П2', 'Петров', 20, 'Москва', TO_DATE('18-12-1970', 'dd-mm-yyyy'));
INSERT INTO ПОСТАВЩИКИ (КОДП, ИМЯ, СТАТУС, ГОРОД, ДАТА_РОЖДЕНИЯ)
VALUES ('П3', 'Зайцев', 30, 'Москва', TO_DATE('25-08-1955', 'dd-mm-yyyy'));
INSERT INTO ПОСТАВЩИКИ (КОДП, ИМЯ, СТАТУС, ГОРОД, ДАТА_РОЖДЕНИЯ)
VALUES ('П4', 'Михайлов', 10, 'Ижевск', TO_DATE('12-10-1960', 'dd-mm-yyyy'));
INSERT INTO ПОСТАВЩИКИ (КОДП, ИМЯ, СТАТУС, ГОРОД, ДАТА_РОЖДЕНИЯ)
VALUES ('П5', 'Тополев', 20, 'Тюмень', TO_DATE('23-11-1963', 'dd-mm-yyyy'));
INSERT INTO ПОСТАВЩИКИ (КОДП, ИМЯ, СТАТУС, ГОРОД, ДАТА_РОЖДЕНИЯ)
VALUES ('П6', 'Ложкин', 30, 'Нижневартовск', TO_DATE('03-03-1972', 'dd-mm-yyyy'));
INSERT INTO ПОСТАВЩИКИ (КОДП, ИМЯ, СТАТУС, ГОРОД, ДАТА_РОЖДЕНИЯ)
VALUES ('П7', 'Мочалкин', 20, 'Тюмень', TO_DATE('30-10-1970', 'dd-mm-yyyy'));
COMMIT;
prompt 7 records loaded
 
prompt Loading ТОВАРЫ...
INSERT INTO ТОВАРЫ (КОДТ, НАИМЕНОВАНИЕ, ЦВЕТ, ВЕС, ГОРОД)
VALUES ('Т1', 'Уголок стальной 40*40', 'Черный', 100, 'Ижевск');
INSERT INTO ТОВАРЫ (КОДТ, НАИМЕНОВАНИЕ, ЦВЕТ, ВЕС, ГОРОД)
VALUES ('Т2', 'Автомобиль "Ода"', 'Мурена', 1200, 'Ижевск');
INSERT INTO ТОВАРЫ (КОДТ, НАИМЕНОВАНИЕ, ЦВЕТ, ВЕС, ГОРОД)
VALUES ('Т3', 'Напиток "Мажитель"', 'Белый', 200, 'Москва');
INSERT INTO ТОВАРЫ (КОДТ, НАИМЕНОВАНИЕ, ЦВЕТ, ВЕС, ГОРОД)
VALUES ('Т4', 'Орех грецкий', 'Ореховый', 250, 'Краснодар');
INSERT INTO ТОВАРЫ (КОДТ, НАИМЕНОВАНИЕ, ЦВЕТ, ВЕС, ГОРОД)
VALUES ('Т5', 'Уайт-спирит', 'Прозрачный', 80, 'Тюмень');
INSERT INTO ТОВАРЫ (КОДТ, НАИМЕНОВАНИЕ, ЦВЕТ, ВЕС, ГОРОД)
VALUES ('Т6', 'Коврик туристический', 'Красно-синий', 2, 'Ижевск');
INSERT INTO ТОВАРЫ (КОДТ, НАИМЕНОВАНИЕ, ЦВЕТ, ВЕС, ГОРОД)
VALUES ('Т7', 'Утюг электрический', 'Красный', 3, 'Курск');
INSERT INTO ТОВАРЫ (КОДТ, НАИМЕНОВАНИЕ, ЦВЕТ, ВЕС, ГОРОД)
VALUES ('Т8', 'Чайник электрический со свистком', 'Белый', 12, 'Москва');
INSERT INTO ТОВАРЫ (КОДТ, НАИМЕНОВАНИЕ, ЦВЕТ, ВЕС, ГОРОД)
VALUES ('Т9', 'Дрель электрическая "Универсал"', 'Оранжевый', 15, 'Ижевск');
INSERT INTO ТОВАРЫ (КОДТ, НАИМЕНОВАНИЕ, ЦВЕТ, ВЕС, ГОРОД)
VALUES ('Т10', 'Самовар', 'Желтый', 10, 'Тула');
COMMIT;
prompt 10 records loaded
 
prompt Loading СТРОКИ_ЗАКАЗА...
INSERT INTO СТРОКИ_ЗАКАЗА (КОДП, КОДТ, КОЛИЧЕСТВО)
VALUES ('П1', 'Т1', 300);
INSERT INTO СТРОКИ_ЗАКАЗА (КОДП, КОДТ, КОЛИЧЕСТВО)
VALUES ('П1', 'Т2', 100);
INSERT INTO СТРОКИ_ЗАКАЗА (КОДП, КОДТ, КОЛИЧЕСТВО)
VALUES ('П1', 'Т5', 200);
INSERT INTO СТРОКИ_ЗАКАЗА (КОДП, КОДТ, КОЛИЧЕСТВО)
VALUES ('П1', 'Т6', 500);
INSERT INTO СТРОКИ_ЗАКАЗА (КОДП, КОДТ, КОЛИЧЕСТВО)
VALUES ('П1', 'Т9', 250);
INSERT INTO СТРОКИ_ЗАКАЗА (КОДП, КОДТ, КОЛИЧЕСТВО)
VALUES ('П2', 'Т3', 800);
INSERT INTO СТРОКИ_ЗАКАЗА (КОДП, КОДТ, КОЛИЧЕСТВО)
VALUES ('П2', 'Т4', 300);
INSERT INTO СТРОКИ_ЗАКАЗА (КОДП, КОДТ, КОЛИЧЕСТВО)
VALUES ('П2', 'Т5', 400);
INSERT INTO СТРОКИ_ЗАКАЗА (КОДП, КОДТ, КОЛИЧЕСТВО)
VALUES ('П5', 'Т5', 100);
INSERT INTO СТРОКИ_ЗАКАЗА (КОДП, КОДТ, КОЛИЧЕСТВО)
VALUES ('П4', 'Т9', 350);
INSERT INTO СТРОКИ_ЗАКАЗА (КОДП, КОДТ, КОЛИЧЕСТВО)
VALUES ('П4', 'Т4', 200);
INSERT INTO СТРОКИ_ЗАКАЗА (КОДП, КОДТ, КОЛИЧЕСТВО)
VALUES ('П3', 'Т8', 300);
INSERT INTO СТРОКИ_ЗАКАЗА (КОДП, КОДТ, КОЛИЧЕСТВО)
VALUES ('П3', 'Т7', 200);
INSERT INTO СТРОКИ_ЗАКАЗА (КОДП, КОДТ, КОЛИЧЕСТВО)
VALUES ('П3', 'Т3', 150);
INSERT INTO СТРОКИ_ЗАКАЗА (КОДП, КОДТ, КОЛИЧЕСТВО)
VALUES ('П6', 'Т4', 100);
INSERT INTO СТРОКИ_ЗАКАЗА (КОДП, КОДТ, КОЛИЧЕСТВО)
VALUES ('П6', 'Т9', 300);
INSERT INTO СТРОКИ_ЗАКАЗА (КОДП, КОДТ, КОЛИЧЕСТВО)
VALUES ('П6', 'Т8', 900);
COMMIT;
 
prompt Done.
spool off
Вот условие задачи и попытка создать скрипт самостоятельно
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
/*для каждого статуса поставщика посчитать суммарный вес, средний вес и 
количество уникальных заказных товаров * если количество 
уникальных заказных товаров более 1*/SELECT поставщики.статус,k.кодт FROM поставщики,
(SELECT СТРОКИ_ЗАКАЗА.КОдт, (товары.вес*строки_заказа.количество) суммарный_вес, avg(товары.вес*строки_заказа.количество) средний_вес FROM СТРОКИ_ЗАКАЗА, товары
GROUP BY СТРОКИ_ЗАКАЗА.КОдт, (товары.вес*строки_заказа.количество)
HAVING COUNT(строки_заказа.кодт)=1) k
ORDER BY поставщики.статус
EXCEPT
SELECT поставщики.статус,k.кодт FROM поставщики,
(SELECT СТРОКИ_ЗАКАЗА.КОдт, (товары.вес*строки_заказа.количество) суммарный_вес, avg(товары.вес*строки_заказа.количество) средний_вес FROM СТРОКИ_ЗАКАЗА, товары
GROUP BY СТРОКИ_ЗАКАЗА.КОдт, (товары.вес*строки_заказа.количество)
HAVING COUNT(строки_заказа.кодт)>1) k
ORDER BY поставщики.статус
к сожалению получить эксклюзивные товары для статусов поставщиков не получается
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.04.2014, 23:20
Ответы с готовыми решениями:

Известен вес каждого ученика из двух классов. Определить количество учеников в каждом классе, вес которых больше 50 кг
1.Известен вес каждого ученика из двух классов. Определить количество учеников в каждом классе, вес...

для каждого ученика известны Ф.И.О Пол и вес.Ученику имеющему вес 50 кг.положено 0,5 л молока.Разобрать проект,позволяющий
для каждого ученика известны Ф.И.О Пол и вес.Ученику имеющему вес 50 кг.положено 0,5 л...

Вывести список пассажиров, вес которых превышает средний вес
Здравствуйте. Необходимо вывести список пассажиров, вес которых превышает средний вес. не могли...

Записи с вариантами: Вычислить средний вес урожая с грядки для каждого дачника
1. Для каждого дачника даны сведения: фамилия, название овоща и урожай с каждой из пяти грядок. ...

8
3543 / 2118 / 751
Регистрация: 02.06.2013
Сообщений: 5,141
17.04.2014, 23:38 2
T-SQL
1
2
3
4
5
6
7
8
9
10
select
 s.статус, sum(t.вес * o.количество), avg(t.вес * o.количество), count(distinct o.кодт)
from
 поставщики s join
 строки_заказа o on o.кодп = s.кодп join
 товары t on t.кодт = o.кодт
group by
 s.статус
having
 count(distinct o.кодт) > 1;
Перемещайтесь в форум по Ораклу.
1
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 78
17.04.2014, 23:55  [ТС] 3
все бы хорошо но после того как я пытаюсь вывести код эксклюзивного товара
SQL
1
2
3
4
5
6
7
8
9
10
SELECT
 s.статус, SUM(t.вес * o.количество), avg(t.вес * o.количество), COUNT(DISTINCT o.кодт), o.КОДТ
FROM
 поставщики s JOIN
 строки_заказа o ON o.кодп = s.кодп JOIN
 товары t ON t.кодт = o.кодт
GROUP BY
 s.статус, o.КОДТ
HAVING
 COUNT(DISTINCT o.кодт) > 1;
выходит сообщение что строки не выбраны
0
3543 / 2118 / 751
Регистрация: 02.06.2013
Сообщений: 5,141
18.04.2014, 00:13 4
Ну и где в задании ведется речь о выводе кода товара?
Что, по-вашему, означает "количество уникальных заказанных товаров"?
0
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 78
18.04.2014, 00:21  [ТС] 5
О выводе кода в программе речь не идет, это для контроля правильности работы запроса. А вот уникальный товар это тот который выпускают только поставщики с определенным статусом. Например для статуса 10 это товар Т1, у поставщиков с другими статусами он не встречается.
0
3543 / 2118 / 751
Регистрация: 02.06.2013
Сообщений: 5,141
18.04.2014, 00:28 6
Цитата Сообщение от Vldslv Посмотреть сообщение
А вот уникальный товар это тот который выпускают только поставщики с определенным статусом. Например для статуса 10 это товар Т1, у поставщиков с другими статусами он не встречается.
Где об этом говорится в задании?
0
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 78
18.04.2014, 00:29  [ТС] 7
"для каждого статуса...уникальных заказных товаров"
0
3543 / 2118 / 751
Регистрация: 02.06.2013
Сообщений: 5,141
18.04.2014, 10:49 8
Цитата Сообщение от Vldslv Посмотреть сообщение
количество уникальных заказных товаров
Следует трактовать как "количество неповторяющихся", а не как "количество эксклюзивных".
0
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 78
18.04.2014, 16:34  [ТС] 9
Согласен, но термин эксклюзивные, четко определяет что товар соответствует статусу, а термин не повторяющиеся
гарантирует то, что название товара не станет повторяться в статусе для других поставщиков. Отсюда могут возникнуть проблемы при решении задачи. Например не будут выбраны эксклюзивные товары повторяющиеся в статусе.
0
18.04.2014, 16:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.04.2014, 16:34
Помогаю со студенческими работами здесь

Функция: в неориентированном графе посчитать суммарный вес рёбер (HomeLisp)
Добрый день! Помогите, пожалуйста, написать функцию. Задача: в неориентированном графе...

Запросить имена, вес и рост трех ваших друзей, найти их суммарный вес и рост
ПОМОГИТЕ ПОЖАЛУЙСТА Программа запрашивает имена, вес и рост трех ваших друзей, находит их...

Из типизированного файла прочитать фамилии и вес людей, увеличить вес каждого на 3%, записать в другой файл
В типизированном файле записаны фамилии людей и их вес. Увеличить вес каждого человека на 3%,...

В файл записаны фамилии и вес людей.Изменить вес каждого человека на з% . Нужно реализовать в МатЛабе
В файл записаны фамилии и вес людей.Изменить вес каждого человека на з% . Нужно реализовать в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru