Форум: "Прочее";
Текущий архив: 2013.12.01;
Скачать: [xml.tar.bz2];
ВнизПереписать расчеты с клиента на сервер Найти похожие ветки
← →
[ВладОшин] © (2013-06-11 12:23) [0]User_1 воспользовался услугами 1 и 2 на сумму 100 и 50 рублей соответственно
User_2 воспользовался услугами 1 на сумму 100 рублей-- drop table OW_TMP_TMP_charge
create table OW_TMP_TMP_charge as
select * from (
select 100 SUMM, 1 SVC, 1 U_ID from dual union all
select 50 SUMM, 2 SVC, 1 U_ID from dual union all
select 100 SUMM, 1 SVC, 2 U_ID from dual )
-- select * from OW_TMP_TMP_charge
User_1 заплатил 120 рублей
User_2 заплатил 90-- drop table OW_TMP_TMP_pay
create table OW_TMP_TMP_pay as
select * from (
select 120 SUMM, 1 U_ID from dual union all
select 90 SUMM, 2 U_ID from dual )
-- select * from OW_TMP_TMP_pay
User_1 должен: всего 150 рублей
из них доля долга по первой услуге 2/3 и по второй 1/3
Заплатил он 120.
Значит, 80 он заплатил за первую услугу и 40 за вторую
т.е. он должен теперь 20 за первую и 10 за вторую.
User_2 должен 10 рублей за услугу 1, он больше не воспользовался никакой, 100 - 90 = 10.
Не соображу как запросом получить долги по услугам.
Подскажете?
← →
[ВладОшин] © (2013-06-11 12:32) [1]упс.. не сюда
← →
[ВладОшин] © (2013-06-11 12:54) [2]да, сам решил - но вообще не нравится :)
select BB.*, C3.SUMM - BB.EQ from (
select B.*, P.SUMM * B.PERCEN EQ
from (select A.ALL_SUM, C.SUMM / A.ALL_SUM PERCEN, C.U_ID, C.SVC
from OW_TMP_TMP_charge C
join (select sum(C.Summ) ALL_SUM, C.U_ID
from OW_TMP_TMP_charge C
group by C.U_ID
) A on A.U_ID = C.U_ID
) B
join OW_TMP_TMP_PAY P on P.U_ID = B.U_ID
) BB
join OW_TMP_TMP_charge C3 on C3.SVC = BB.SVC and C3.U_ID = BB.U_ID
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2013.12.01;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.002 c