Гость
Map
Форумы / MySQL [игнор отключен] [закрыт для гостей] / SQL Запрос на / 11 сообщений из 11, страница 1 из 1
16.02.2022, 21:04
    #40134649
Dropyyy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Запрос на
Всем привет!)
Нужна ваша помощь)
Есть таблица products с полями NAME и PRICE(Таблица во вложении)
Вот исходные данные: create table Product(NAME varchar2(255), PRICE number );
insert into Product(NAME, PRICE)
values ('Молоко', 130 );
insert into Product(NAME, PRICE)
values ('Сыр', 162 );
insert into Product(NAME, PRICE)
values ('Арахис', 300 );
insert into Product(NAME, PRICE)
values ('Хлеб', 40);
insert into Product(NAME, PRICE)
values ('Бананы',200);
insert into Product(NAME, PRICE)
values ('Шоколад',90);
insert into Product(NAME, PRICE)
values ('Клюква', 140);
insert into Product(NAME, PRICE)
values ('Морковка',92 );
insert into Product(NAME, PRICE)
values ('Паста', 135 );
insert into Product(NAME, PRICE)
values ('Шампунь', 170 );

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

Вначале думал написать с помощью SUM и подзапроса,но совсем не то получается.
Помогите пожалуйста .
...
Рейтинг: 0 / 0
16.02.2022, 21:31
    #40134654
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Запрос на
Dropyyy
3 товара, общая сумма которых равна или больше 510

А если сумма даже трёх самых дорогих - всё равно меньше?
...
Рейтинг: 0 / 0
16.02.2022, 21:42
    #40134657
Dropyyy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Запрос на
Akina,Отвечая на ваш вопрос- Сумма 3х самых дорогих все равно будет больше 510(соответственно 'Арахис', 300 'Бананы',200 'Шампунь', 170 )

И извините что расплывчато объяснил и с ошибками написал условие. Тут общая стоимость равен или больше 410. И самое главное,сумма выводимых 3х товаров должна быть наиболее близка к 410,т.е. чтобы можно было достигнуть этой суммы,потратив меньше всего денег на эти товары.
...
Рейтинг: 0 / 0
16.02.2022, 21:45
    #40134659
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Запрос на
Dropyyy
Сумма 3х самых дорогих все равно будет больше 510

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

PS. А первичный индекс в таблице-то есть?
...
Рейтинг: 0 / 0
16.02.2022, 21:49
    #40134661
Dropyyy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Запрос на
Akina,первичного индекса в таблице нет. И в данном случае данные не меняются)
...
Рейтинг: 0 / 0
16.02.2022, 22:00
    #40134664
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Запрос на
...
Рейтинг: 0 / 0
16.02.2022, 22:53
    #40134672
Dropyyy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Запрос на
Akina, Cпасибо. Ознакомился с пособием. Я попробовал разные способы написание запроса,но не смог реализовать главное условие. Если сможете подсказать в каком направлении копать,буду очень благодарен
...
Рейтинг: 0 / 0
17.02.2022, 07:40
    #40134700
paver
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Запрос на
Dropyyy
Я попробовал разные способы написание запроса,но не смог реализовать главное условие. Если сможете подсказать в каком направлении копать,буду очень благодарен

И где пробы?
Слепи джойнами 3 копии таблицы (условия связывания: NAME второй копии д.б больше первой, а третьей - больше второй), получи сумму трех цен, откинь лишние, отсортируй оставшиеся
...
Рейтинг: 0 / 0
20.02.2022, 15:00
    #40135376
VDeltsov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Запрос на
MS SQL:
select top 1
p1.*, p2.*, p3.*
, p1.PRICE + p2.PRICE + p3.PRICE as S
from Product p1, Product p2, Product p3
where p1.NAME <> p2.NAME and p2.NAME <> p3.NAME
and p1.PRICE + p2.PRICE + p3.PRICE > 410
order by p1.PRICE + p2.PRICE + p3.PRICE

ORACLE:

select * from (
select
p1.*, p2.*, p3.*
, p1.PRICE + p2.PRICE + p3.PRICE as S
from Product p1, Product p2, Product p3
where p1.NAME <> p2.NAME and p2.NAME <> p3.NAME
and p1.PRICE + p2.PRICE + p3.PRICE > 410
order by p1.PRICE + p2.PRICE + p3.PRICE
)
where rownum = 1
...
Рейтинг: 0 / 0
20.02.2022, 16:44
    #40135387
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Запрос на
Dropyyy
Akina, Cпасибо. Ознакомился с пособием. Я попробовал разные способы написание запроса,но не смог реализовать главное условие. Если сможете подсказать в каком направлении копать,буду очень благодарен


Какие именно разные способы вы пробовали? у меня интернет сбойнул, не вижу
...
Рейтинг: 0 / 0
21.02.2022, 05:31
    #40135466
paver
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Запрос на
VDeltsov
MS SQL:
select top 1
p1.*, p2.*, p3.*
, p1.PRICE + p2.PRICE + p3.PRICE as S
from Product p1, Product p2, Product p3
where p1.NAME <> p2.NAME and p2.NAME <> p3.NAME
and p1.PRICE + p2.PRICE + p3.PRICE > 410
order by p1.PRICE + p2.PRICE + p3.PRICE

Неправильно. Должно быть
Код: sql
1.
where p1.NAME < p2.NAME and p2.NAME < p3.NAME


Ну и в ORDER BY можно использовать алиас S
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / SQL Запрос на / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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