Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Работа Новый топик    Ответить
 Помощь с SQL-запросом  [new]
Raketaaaaa
Member

Откуда:
Сообщений: 3
Добрый день.

начал изучать SQL и возникла сложность с одним заданием.

Задание:
Написать SQL запрос к таблице: найти топовые артикулы, которые дают более 20% выручки, и вывести данные по заказам, которые содержат эти артикулы, пометить топовые артикулы в составе заказа.

Просьба подсказать правильный запрос.
Скриншот с таблицей во вложении.
28 фев 19, 12:36    [21821612]     Ответить | Цитировать Сообщить модератору
 Re: Помощь с SQL-запросом  [new]
Raketaaaaa
Member

Откуда:
Сообщений: 3
Файл не прикрепляется.
Скидываю так.

Таблица 1. Заказы
№Заказа Артикул Выручка
1 1 140
1 2 70
1 3 40
2 2 120
2 3 10
3 4 70
3 5 20
3 1 150
4 6 20
4 3 10
4 5 60
5 1 10
5 3 10
5 5 60
5 6 50
6 3 110
6 4 40
7 2 30
8 6 10


Результат выполнения запроса:
Заказ Артикул Выручка Топовый
1 1 140 Y
1 2 70 Y
1 3 40
2 2 120 Y
2 3 10
3 4 70
3 5 20
3 1 150 Y
5 1 10 Y
5 3 10
5 5 60
5 6 50
7 2 30 Y
28 фев 19, 12:41    [21821624]     Ответить | Цитировать Сообщить модератору
 Re: Помощь с SQL-запросом  [new]
rim8
Member

Откуда:
Сообщений: 574
Учи оконные функции.
28 фев 19, 13:38    [21821714]     Ответить | Цитировать Сообщить модератору
 Re: Помощь с SQL-запросом  [new]
Raketaaaaa
Member

Откуда:
Сообщений: 3
rim8,
Не могли бы помочь с составлением запроса?
Не понимаю как вот эту часть запроса составить: "найти топовые артикулы, которые дают более 20% выручки"
Буду признателен.
28 фев 19, 21:29    [21822226]     Ответить | Цитировать Сообщить модератору
 Re: Помощь с SQL-запросом  [new]
londinium
Member

Откуда: Киев
Сообщений: 1065
Raketaaaaa,
без претензий на красоту и оптимальность
USE master
GO

WITH ORDERS(ORDERNUMBER,ART,INCOME) AS
(
  SELECT 1,1,140
   UNION ALL
  SELECT 1,2,70
   UNION ALL
  SELECT 1,3,40
   UNION ALL
  SELECT 2,2,120
   UNION ALL
  SELECT 2,3,10
   UNION ALL
  SELECT 3,4,70
   UNION ALL
  SELECT 3,5,20
   UNION ALL
  SELECT 3,1,150
   UNION ALL
  SELECT 4,6,20
   UNION ALL
  SELECT 4,3,10
   UNION ALL
  SELECT 4,5,60
   UNION ALL
  SELECT 5,1,10
   UNION ALL
  SELECT 5,3,10
   UNION ALL
  SELECT 5,5,60
   UNION ALL
  SELECT 5,6,50 
   UNION ALL
  SELECT 6,3,110
   UNION ALL
  SELECT 6,4,40
   UNION ALL
  SELECT 7,2,30
   UNION ALL
  SELECT 8,6,10
      
),
PERC AS
(
  SELECT R.ART,R.INCOME,
  (1.0*R.INCOME/(SELECT SUM(X.INCOME)*1.0 FROM ORDERS AS X))*100.00 AS PERC_A
  FROM ORDERS AS R
),
ARTSUMM AS
(
  SELECT P.ART,SUM(PERC_A)AS PERC_PER_ART
   FROM PERC AS P
    GROUP BY P.ART
   
)
SELECT R.ORDERNUMBER,R.ART,R.INCOME,
CASE
 WHEN ISNULL(A.PERC_PER_ART,0.00)>20.00 THEN 'Y'
 ELSE 'N'
END AS FLAG 
FROM ORDERS AS R
LEFT JOIN ARTSUMM AS A ON R.ART=A.ART
28 фев 19, 23:00    [21822270]     Ответить | Цитировать Сообщить модератору
 Re: Помощь с SQL-запросом  [new]
Mr.Fontaine
Member

Откуда: у меня столько мыслей?
Сообщений: 700
Raketaaaaa
rim8,
Не могли бы помочь с составлением запроса?
Не понимаю как вот эту часть запроса составить: "найти топовые артикулы, которые дают более 20% выручки"
Буду признателен.

А теперь бегай за londinium, чтоб отдагодарить его. Ибо https://www.sql.ru/forum/941371/studentam-zhelaushhim-pomoshhi
1 мар 19, 08:41    [21822389]     Ответить | Цитировать Сообщить модератору
Все форумы / Работа Ответить