Новость из категории: Информация

SQL Server: агрегатные вычисления с Distinct. Продолжение

SQL Server: агрегатные вычисления с Distinct. Продолжение

Правила для начисления скидок приведены ниже.
1. Процент скидки по номенклатуре рассчитывается так: 35% умножается на количество разных продуктов, заказанных клиентом в течение рассматриваемого месяца, и делится на количество продуктов, заказанных всеми клиентами в течение рассматриваемого месяца. Например, предположим, что в январе 2016 года клиент 1 заказал 5 разных продуктов, клиент 2 заказал 10 разных продуктов, и все клиенты заказали 50 разных продуктов. Размер скидки по номенклатуре для клиента 1 в январе 2016 года составит 35% х 5/50 = 3,5%, а для клиента 2 — 35% х 10/50 = 7%.
2. Процент скидки за количество рассчитывается для каждой строки заказа следующим образом: если количество составляет не менее 10, то скидка будет 6%, в противном случае скидка не начисляется. Например, если количество заказанного продукта в строке заказа 15, то скидка за количество составит 6%, но для строки заказа с количеством 9 она не действует.
3. Окончательный процент скидки для строки заказа рассчитывается следующим образом: если сумма скидки по номенклатуре и скидки за количество не превышает 10%, то применяется сумма обеих скидок, в противном случае— 10%. Например, вспомните, что в приведенном выше примере в январе 2016 года клиент 1 получает скидку по номенклатуре 3,5%, а клиент 2 — скидку по номенклатуре 7%. В строке заказа для клиента 1, где применяется скидка за количество 6%, сумма скидки по номенклатуре (3,5%) и скидки за количество (6%) составляет 9,5%. Поскольку скидка не превышает максимального значения 10% для строки заказа, скидка 9,5% считается окончательной для данной строки заказа. Но в строке заказа для клиента 2, где применяется скидка за количество, сумма скидки по номенклатуре (7%) и скидки за количество (6%) превышает максимальное значение 10%. Поэтому окончательная скидка для этой строки заказа составляет 10%.

Примените окончательную скидку строки заказа к значению строки заказа (pet х qty х unitprice). Сумма всех скидок строки заказа для клиента должна быть возвращена клиенту как скидка за месяц. Например, ваше решение для января 2016 года должно принести такой результат, как показано на экране ниже.

SQL Server: агрегатные вычисления с Distinct. Продолжение
Результат расчета скидок для января 2016

Если бы оконные агрегатные вычисления поддерживались, то можно было бы использовать решение для января 2016 года, описываемое кодом ниже.

SQL Server: агрегатные вычисления с Distinct. Продолжение
Желаемое решение для января 2016 года

В следующих разделах статьи мы рассмотрим четыре поддерживаемых обходных приема.

SQL Server: агрегатные вычисления с Distinct. Продолжение


Работа с агрегатными вычислениями с Distinct в среде SQL Server требует быстрого и стабильного Интернет-подключения. Поэтому рекомендуется использовать роутеры 4G. Дело в том, что при стационарных подключениях такие роутеры обеспечивают передачу данных со скоростью в 1 Гбит/с. Этого с лихвой хватит для нашей задачи.


<<К началу статьи

Рейтинг статьи

Оценка
0/5
голосов: 0
Ваша оценка статье по пятибальной шкале:
 
 
   

Поделиться

Перевести статью:

Похожие новости

Комментарии

Информация

^ Наверх