Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Интересная задачка с http://sql-ex.ru / 10 сообщений из 10, страница 1 из 1
09.01.2017, 14:19
    #39380862
Интересная задачка с http://sql-ex.ru
Добавить в таблицу PC те модели ПК из Product, которые отсутствуют в таблице PC.
При этом модели должны иметь следующие характеристики:
1. Код равен номеру модели плюс максимальный код, который был до вставки.
2. Скорость, объем памяти и диска, а также скорость CD должны иметь максимальные характеристики среди всех имеющихся в таблице PC.
3. Цена должна быть средней среди всех ПК, имевшихся в таблице PC до вставки.

Вот ТРУ решение этой задачи:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
insert into PC
select 
(P.model+ (select max(pc.code) from pc)) code,
p.model model,
(select max(speed) from pc) speed,
(select max(ram) from pc) ram,
(select max(hd) from pc) hd,
CAST((SELECT MAX(CAST (SUBSTRING(cd,1,LEN(cd) - 1) AS int)) FROM PC) AS VARCHAR) + 'x' AS cd,
(select avg(price) from pc) price
from product p
where P.Model not in (select Pc.Model from pc)
and type = 'PC'



я решил задачу таким образом (наверняка как затупок, ведь в таком случае select max(cd) from pc - максимальное поле берется не совсем корректно т.к. значения в данном поле типа VARCHAR2(10 BYTE) и имеет значения 12x, 40x, 50x):
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
insert into PC
select 
P.model+ (select max(pc.code) from pc) as code,
p.model as model,
(select max(speed) from pc) speed,
(select max(ram) from pc) ram,
(select max(hd) from pc) hd,
(select max(cd) from pc)  cd,
(select avg(price) from pc) price
from product p
where P.Model not in (select Pc.Model from pc)
and type = 'PC';



теперь интересное что при выполнении селекта из ТРУ решения, на Oracle Database 11g Express Edition ругаетсо ошибкой
Код: plsql
1.
ORA-00906: missing left parenthesis

:
Код: plsql
1.
2.
3.
4.
5.
SELECT CAST((SELECT MAX(CAST (SUBSTRING(cd,1,LEN(cd) - 1) AS INT)) FROM PC) AS VARCHAR) + 'x' AS cd
FROM product p
WHERE P.Model NOT IN
  (SELECT Pc.Model FROM pc)
AND type = 'PC';



Вопрос ПОЧЕМУ?
...
Рейтинг: 0 / 0
09.01.2017, 14:28
    #39380869
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная задачка с http://sql-ex.ru
Джонни_Инглиш,

Ты действительно ожидаешь работы mssql синтаксиса в оракле?
...
Рейтинг: 0 / 0
09.01.2017, 14:29
    #39380870
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная задачка с http://sql-ex.ru
Совершенно бредовая задача и проктостоматологическое решение для сервера без MERGE.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
09.01.2017, 14:39
    #39380878
Интересная задачка с http://sql-ex.ru
ok, я его и не ждал)

Код: plsql
1.
2.
3.
4.
5.
6.
SELECT
CAST( (SELECT MAX(CAST (SUBSTR(cd,1,LENGTH(cd) - 1) AS INT)) FROM PC) AS VARCHAR) + 'x' AS cd
FROM product p
WHERE P.Model NOT IN
  (SELECT Pc.Model FROM pc)
AND type = 'PC';



Ошибка сохраняется:
Код: plsql
1.
2.
[color=red]
ORA-00906: missing left parenthesis[/color]
...
Рейтинг: 0 / 0
09.01.2017, 14:52
    #39380882
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная задачка с http://sql-ex.ru
Джонни_Инглиш,

Осталось буквально ещё одно усилие.
...
Рейтинг: 0 / 0
09.01.2017, 14:52
    #39380884
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная задачка с http://sql-ex.ru
Джонни_Инглиш,

Т.е. прочесть concepts и sql language reference. В частности, про типы данных и оператор конкатенации.
...
Рейтинг: 0 / 0
09.01.2017, 15:02
    #39380889
intrilligator
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная задачка с http://sql-ex.ru
Код: plsql
1.
+ 'x'



а чо. в яве проканало бы..
...
Рейтинг: 0 / 0
09.01.2017, 15:05
    #39380894
Интересная задачка с http://sql-ex.ru
env,

ок, спс что сильно не пинаешь)

Код: plsql
1.
2.
3.
4.
5.
6.
SELECT
CAST( (SELECT MAX(CAST (SUBSTR(cd,1,LENGTH(cd) - 1) AS INT)) FROM PC) AS VARCHAR) || 'x' AS cd
FROM product p
WHERE P.Model NOT IN
  (SELECT Pc.Model FROM pc)
AND type = 'PC';



ошибка сохраняется.
...
Рейтинг: 0 / 0
09.01.2017, 15:25
    #39380904
arlx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная задачка с http://sql-ex.ru
Текст ошибки прочитал?
Отсутствует левая скобка. а значит что?
Значит:
Код: plsql
1.
2.
3.
4.
5.
6.
SELECT
CAST( (SELECT MAX(CAST (SUBSTR(cd,1,LENGTH(cd) - 1) AS INT)) FROM PC) AS VARCHAR(10)) || 'x' AS cd
FROM product p
WHERE P.Model NOT IN
  (SELECT Pc.Model FROM pc)
AND type = 'PC';



Хотя все это бред..))
...
Рейтинг: 0 / 0
09.01.2017, 15:30
    #39380908
Интересная задачка с http://sql-ex.ru
arlx,

спс.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Интересная задачка с http://sql-ex.ru / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]