Query For Top 5 продукта и выставочный зал на основе скидки - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть таблица l_sales , и она содержит Product_id, выставочный зал, скидка Столбцы. Я хочу только 5 лучших выставочных залов, основанных на скидке, и один выставочный зал может продавать несколько продуктов, и я хочу, чтобы 5 лучших выставочных залов на основе скидок. Как этого добиться? Например: Showroom | Product_id | Скидка A. Soap. 90 A. Pen. 60 B. Pen. 70 C. Карандаш. 40 д. Торт. 60 E. Шоколад. 50

Результатом будет Showroom | Product_id | Discount A. Soap. 90 A. Pen. 60 B. Pen. 70 C. Карандаш. 40 д. Торт. 60 Здесь мы получаем A дважды, потому что он продает два продукта, и его скидка должна быть больше, чем у других

1 Ответ

1 голос
/ 08 апреля 2020

Вы можете использовать аналитическую функцию следующим образом:

SELECT SHOWROOM, Product_id, DISCOUNT 
  FROM (SELECT T.*, 
               ROW_NUMBER() OVER (PARTITION BY SHOWROOM ORDER BY DISCOUNT DESC) AS RN 
          FROM (SELECT T.*, 
                       DENSE_RANK() OVER (ORDER BY S DESC) DR 
                  FROM (SELECT T.*,
                               SUM(DISCOUNT) OVER (PARTITION BY showroom) S
                          FROM l_sales T) T) 
          WHERE DR <= 5)
 WHERE RN <= 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...