Распределить пропорционально базе показатель в запросе без потери копеек Когда высчитываешь какие-либо показатели в запросах,то теряются копейки. Например за счет деления Показатель1/База*Показатель2. Есть какой-нибудь готовый алгоритм по их вытаскиванию и дораспределению запросом же? |
0-Дебилы > Пакетный запрос дополни: 1. Сумма(БазаРаспределения) - Сумма(РезультатРаспределения) 2. Выбери запись из результата распределения с наибольшим значением показателя 3. К результату 2-го шага добавь копейки первого 4. Выбери из результата распределения все записи кроме той, что взял на втором шаге и объедини с результатом 3-го шага. |
1 Спасибо! 1-й этап сделал, а нет ли примера для 2-го шага? Просто чтобы выбрать записи с максимальным значением показателя, я сначала делаю запрос на максимальные значения по необходимым группировкам, а потом к нему джойню сами записи. Несколько смущает ставить условия соединения по цифрам, или это нормально? Чето запутался |
(1) Reaper и те кто знает , не подскажите как сделать 2-й этап в плане запросов. А то у меня выходят соединения по цифрам, такого просто не делал доселе,но не вижу варианта, ведь вроде это сомнительная операция. Помогите плиз, ведь мы Дебилы же:) |
Первый запрос помещаешь во временную таблицу. Второй запрос делаешь к этой таблице. |
3-Дебилы >Сортировка по убыванию, выбрать 1 строку. Элементарно же. |
(4) это понятно, вопрос как выбрать максимумы (5) так мне надо не одну строку , а top 1 в рамках каждой группировки |
Имеется Сумма для распределения (S), И сумма показателей (долей) для распределения(P=p1+p2+p3+...). После каждой итерации (s1=S/P*p1) уменьшаем сумму для распределения (S=S-s1) и Сумму показателей (P=P-p1). Последнему в списке щедро отдаем весь кошелек. |
(7) запросом хочу |
8-Дебилы > Используй ТЗ как временную таблицу. |
(9) я в скд делаю, поэтому хотелось бы обойтись одними запросами. Иначе придется выгружать результат в ТЗ, а потом опять подсовывать в скд |
ну короче сделал все, работает. только вот соединения в запросе по числам - подозреваю, что это не очень нормально |
Добавил еще один показатель и обнаружилась лажа. В рамках группировки может быть несколько одинаковых значений и все они одинаково максимальные.Тогда он списывает дельту со всех таких строк. Т.е. критерия максимальности недостаточно, требуется выбрать еще и Первые 1 среди максимальных в каждой группе.Не пойму, как это реализовать? Дайте плиз пример запросов лучше, может в типовой где-то есть такое? |
12-Дебилы > Либо делай нумерацию для предварительного результата распределения, либо бей СКД на 2 набора данных так, чтобы ведущий собрал список группировок и суммы к распределению, а ведомый делал распределение в рамках одной группировки. |
короче кинул на Максимум(Показатель), где показатель - объект справочник ссылка.Тем самым получился какбе Top 1 в рамках группировки |
Текущее время: 07:37. Часовой пояс GMT +3. |