powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Нужен пинок
15 сообщений из 15, страница 1 из 1
Нужен пинок
    #38551082
macnur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,

Я начал изучать SQL с недавних пор. Сейчас наткнулся на задачу и уже второй день никак не могу решить. Хотел бы получить подсказку в каком направлении продвигаться в решении этой задачи.

Задача заключается в следующем:
Для каждой нации в БД(NATION), найти имя наиболее закупаемой запчасти(из таблицы PARTKEY), где нация соответствует нации клиента(CUSTOMER -> NATIONKEY).


Схема БД в приложении.
...
Рейтинг: 0 / 0
Нужен пинок
    #38551092
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эта задача решается полудюжиной способов в зависимости от используемого SQL сервера.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Нужен пинок
    #38551093
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
macnur,

Схема неотображается.
...
Рейтинг: 0 / 0
Нужен пинок
    #38551096
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если наиболее закупаемых частей (кстати как именно определяется наиболее закупаемая часть) будет более одной, то бишь две и более части будут иметь одинаковый объем продаж то какую выводить?
Картинку замените на скрипт создания таблиц, чтобы оттуда можно было скопировать/вставить названия полей и таблиц.
...
Рейтинг: 0 / 0
Нужен пинок
    #38551101
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
macnurХотел бы получить подсказку в каком направлении продвигаться в решении этой задачи.
Скорее всего, Вам стоит обратить внимание на групповые функции и выражение GROUP BY.
...
Рейтинг: 0 / 0
Нужен пинок
    #38551105
macnur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения если рисунок не отображается.
Вот другая ссылка на рисунок.
https://www.dropbox.com/s/w0h6oxxm7ru69nk/БД.png
...
Рейтинг: 0 / 0
Нужен пинок
    #38551115
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
macnur,

"из таблицы PARTKEY" - ну и где эта таблица?
...
Рейтинг: 0 / 0
Нужен пинок
    #38551192
macnur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача заключается в следующем (обновлено):

Для каждой нации в БД(таблица NATION), найти имя наиболее закупаемой запчасти(из таблицы PART), где нация соответствует нации клиента(талбица CUSTOMER).
...
Рейтинг: 0 / 0
Нужен пинок
    #38551235
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
macnurЗадача заключается в следующем (обновлено):
Ответ не меняется. Выбирай что есть под рукой:
1) Подзапросы
2) Derived Tables
3) Аналитические функции
4) Процедурные расширения

Задача решается любым из этих инструментов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Нужен пинок
    #38551259
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1 создадим именованный набор данных
это может быть вьюха, СТЕ, или временная таблица не суть важно

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
create view qqq
as 
select p.name as part_name,n.name as nation_name
count(*) as amount
from lineitem i
join orders o on i.orderkey=o.orderkey
join customer c on o.custkey=c.custkey
join nation n on n.nationkey=c.nationkey
join part p on p.partkey=i.partkey
group by p.name, n.name



Здесь в качестве самой закупаемой фунции будет count(*) хотя легко может быть sum(quantity) или sum(quantity*extendedprice) или sum(quantity*extendedprice - discount) или sum(quantity*extendedprice + tax - discount) короче как велит фантазия.

2 как видно qqq содержит все строки, а нам надо отфильтровать только максимальную для каждой нации
создам еще один поименованный набор данных
Код: sql
1.
2.
3.
4.
create view bbb as 
select nation_name,part_name,amount
from qqq q1
where amount=(select max(amount) from qqq q2 where q1.nation_name=q2.nation_name)



в случае если две запчасти имеют одинаковый amount они попадают в выборку обе, кроме того нации не имеющие закупок (какие-нибудь атланты) из нее исключены, чтобы побороться с этим можно применить скалярный подзапрос

3

Код: sql
1.
2.
3.
select name,
(select max(part_name) from bbb where nation_name=name)
from nation
...
Рейтинг: 0 / 0
Нужен пинок
    #38551324
macnur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Spasibo Vam ogromnoe. Kak ia upomyanul ranee, ia tolko izuchaiu SQL i ne znakom s VIEW i temporary TABLE. Posle Vashego poiasneniya vse stalo na mnogo proshe.
...
Рейтинг: 0 / 0
Нужен пинок
    #38551513
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
macnur,

мужчина, я тебе уже ответил в ветке MySQL.

за это расскажи мне, какой олух дал тебе задание переписывать TPC-H ?
...
Рейтинг: 0 / 0
Нужен пинок
    #38551567
macnur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv,
pochemu vy vozmushetes'? Chto ne pravilnogo s etim TPC-H?
...
Рейтинг: 0 / 0
Нужен пинок
    #38551669
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
macnurMasterZiv,
pochemu vy vozmushetes'? Chto ne pravilnogo s etim TPC-H?виртуальной клавиатурой западло пользоваться, да?
...
Рейтинг: 0 / 0
Нужен пинок
    #38552586
macnur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
egorych,
нет, исправился.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Нужен пинок
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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