Как я могу рассчитать "ступенчатую" цену в SQL?
Эй,
У меня есть несколько продуктов в моей БД, некоторые из них оцениваются в диапазонах, а другие - в ступенчатых диапазонах, основанных на количестве:
окантовка (не ступенчатая)
productA: 1-5 = £25, 6-10 = £22
Итак, если вы покупаете 5, то все они стоят 25 фунтов (125 фунтов), но если вы покупаете 6, то все они стоят 22 фунта (132 фунта)
ступенчатая окантовка
productB: 1-5 = £105, 6-10 = £100
Итак, если вы покупаете 6, то первые 5 стоят 105 фунтов, а 6-й (или 7-й, 8-й и т. д.) - 100 фунтов
5*105+(6-5)*100
есть ли " аккуратный"* как это сделать?
спасибо ^_^
Энди
*Аккуратный:Цитата:1. упорядочено в аккуратном порядке; в хорошем порядке.
2. сделано с демонстрацией мастерства или эффективности.
Что я уже пробовал:
Итак, вот что у меня есть до сих пор:
select c.company_id, c.company_name, b.pricing_price, p.product_name, l.licence_quantity, b.pricing_price * l.licence_quantity as company_cost from company c inner join licence l on c.company_id = l.licence_companyid inner join product p on l.licence_productid = p.product_id inner join price_banding b on l.licence_productid = b.pricing_productid where b.pricing_band_min<=l.licence_quantity and (b.pricing_band_max >= l.licence_quantity or b.pricing_band_max is null) and b.pricing_stepped = 0
Я вам ценовой группы количество в вид:
with banding as( select p.pricing_id, p.pricing_productid, p.pricing_band_min, p2.pricing_band_min-1 as pricing_band_max, p.pricing_price, p.pricing_stepped, row_number() over (partition by p.pricing_productid,p.pricing_band_min order by p2.pricing_band_min-1) as num from pricing p left outer join pricing p2 on p.pricing_productid = p2.pricing_productid and p.pricing_band_min<p2.pricing_band_min ) select p.pricing_id, p.pricing_productid, p.pricing_band_min, p.pricing_band_max, p.pricing_price, p.pricing_stepped from banding p where p.num = 1