#sql #oracle
#sql #Oracle
Вопрос:
Добрый день: я пытаюсь определить наилучший способ получить процент от проданных продуктов, которые составляют 80% случаев продаж (и / или долларов). В прошлом году сообщалось о 20%. В этом году я получаю то же самое, но я опасаюсь верить в это, поскольку кажется, что это прямая корреляция между процентом продаж, который мне нужен, и процентом, оставшимся. Например, если я хочу 90% продаж, то я получаю 10% продуктов.
Хотя формулы, похоже, работают в приведенном ниже запросе, мне интересно, искажен ли он из-за двойных значений в случаях продаж. Если бы я должен был добавить 80% случаев продаж, то количество продуктов было бы намного меньше. Но я не знаю, искажен ли запрос из-за этих двойных значений, и это дает мне 80% при более высоком значении. Я также видел, что есть совокупный percent_rank — должен ли я попробовать это?
Вот пример запроса, в котором я пытаюсь выбрать пару вариантов, чтобы получить более разумное значение. Заранее спасибо!
SELECT
sales_cases,
total_sales_cases,
total_item_count ,
NVL(RowNbrCs,0) as RowNbrCs,
PERCENT_RANK() OVER(PARTITION BY company_id ORDER BY (sales_cases / total_sales_cases) ASC ) as Rank_by_Cases ,
PERCENT_RANK() OVER(PARTITION BY company_id ORDER BY (NVL(RowNbrCs,0) / sum(total_sales_cases)) ASC ) as Rank_by_Cases
FROM (
SELECT
company_id ,
prod_id ,
SUM( NVL(sales_cases,0)) ,0) as sales_cases,
SUM( NVL(net_sales,0)) ,0) as net_sales,
ROUND( SUM(( SUM( NVL(sales_cases,0)) )) OVER(PARTITION BY company_id ),0) as total_sales_cases,
ROUND( SUM(( SUM( NVL(net_sales,0)) )) OVER(PARTITION BY company_id ),0) as total_net_sales,
ROW_NUMBER() OVER(PARTITION BY company_id ORDER BY SUM( NVL(sales_cases,0)) ASC ) as RowNbrCs,
ROW_NUMBER() OVER(PARTITION BY case when company_id ORDER BY SUM( NVL(net_sales,0)) ASC ) as RowNbrSls,
SUM(( COUNT(distinct prod_id) )) OVER() as total_item_count
from sales, customer, product
where << conditions >>
group by
company_id , prod_id
)
group by
sales_cases ,
total_sales_cases ,
total_item_count ,
RowNbrCs ,
company_id
order by RowNbrCs desc