Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2020, 16:09   #1
eliasum
Пользователь
 
Регистрация: 12.02.2015
Сообщений: 31
По умолчанию Join 2 таблицы на PL SQL

Здравствуйте! Помогите решить задание на PL/SQL:

Есть две таблицы:
7 .jpg

1. Нужно вывести имена всех продавцов, у которых больше 1 заказа, начиная с 2010 года.

2. Вывести список продавцов и количество их заказов, имеющих максимальное количество проданных товаров.

Тут нужно использовать Inner Join?
eliasum вне форума Ответить с цитированием
Старый 10.04.2020, 14:51   #2
eliasum
Пользователь
 
Регистрация: 12.02.2015
Сообщений: 31
По умолчанию

Пока реализовал таблицы:

Код:
CREATE TABLE Sellers( 
  id INT PRIMARY KEY NOT NULL,
    Name VARCHAR(20) NULL,  
    Age INT NULL,
  Salary INT NULL,                          
)
 
INSERT dbo.Sellers (id, Name, Age, Salary)  
VALUES (1, 'Sara', 61, 3000),
     (2, 'Billy', 20, 4500),    
     (3, 'Dan', 23, 2400),
     (4, 'Joe', 35, 7800)   
 
CREATE TABLE Orders( 
  NUMBER INT NULL,
    Order_date DATE NULL,  
    Salesperson_id INT NOT NULL,
  Amount INT NULL,                          
)
 
INSERT dbo.Orders (NUMBER, Order_date, Salesperson_id, Amount)  
VALUES (10, '2006-08-02', 2, 540),
     (20, '2019-01-03', 2, 1800),   
     (30, '2015-07-14', 1, 640),
     (40, '2018-01-29', 2, 2400),   
     (50, '2018-02-03', 3, 600),
     (60, '2009-03-02', 4, 720),    
     (70, '2008-05-06', 2, 150),
     (80, '2019-01-02', 2, 101),    
     (90, '2018-06-07', 3, 40)
eliasum вне форума Ответить с цитированием
Старый 11.04.2020, 17:04   #3
Viktor61
Пользователь
 
Регистрация: 05.05.2018
Сообщений: 92
По умолчанию

Цитата:
Сообщение от eliasum Посмотреть сообщение
...вывести имена всех продавцов, у которых больше 1 заказа, начиная с 2010 года.
Для FireBird
Код:
 select SELLERS.name, count(ORDERS.amount)
from  SELLERS  join ORDERS on  (id = salesperson_id) and (ORDERS.order_date > '01.01.2010')
group by name
having  count(ORDERS.amount) > 2;
Viktor61 вне форума Ответить с цитированием
Старый 11.04.2020, 17:19   #4
Viktor61
Пользователь
 
Регистрация: 05.05.2018
Сообщений: 92
По умолчанию

Цитата:
Сообщение от eliasum Посмотреть сообщение
Вывести список продавцов и количество их заказов, имеющих максимальное количество проданных товаров.
Возможно, здесь неточно задано условие: ни в одной из таблиц нет сведений о кол-ве проданных товаров. Рискну предположить, что условие звучит так:
Вывести список продавцов и наибольшую сумму, которую они получили при продажах товара?
Тогда, опять для FireBird'a
Код:
select SELLERS.name, Max(ORDERS.amount)
from  SELLERS  join ORDERS on  (id = salesperson_id)
group by name;

Последний раз редактировалось Viktor61; 11.04.2020 в 21:39.
Viktor61 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[БД FireBird] Ограничить количество строк с таблицы JOIN KBO Помощь студентам 3 26.05.2019 13:35
Запрос Join и таблицы с внешними ключами Вероника99 SQL, базы данных 4 22.04.2016 22:24
Join таблицы с уже выбраннымм множеством (sql) Devian21 SQL, базы данных 7 30.07.2015 13:03
inner join/full join SashkaSonin БД в Delphi 6 23.03.2012 17:13
join в sql tsergey Помощь студентам 1 12.02.2009 13:10