Это довольно сложно, я весь день царапаю голову.MySQL pro rata подсчет различных значений за последний период
У меня есть таблица, содержащая биллинговые периоды
ID | DATEBEGIN | DATEEND | CUSTOMER_ID
=======+===========+==========+=================
1 | 1/1/2011 | 30/1/2011 | 1
У меня есть таблица, содержащая
ID | NAME
=======+===========
1 | JOHN
2 | JACK
3 | Elwood
У меня есть таблица, содержащая предметы, купленные по подписке (оптовые счета 'под клиентов
ID | DATE | SUBCUSTOMER_ID | CUSTOMER ID
=======+===========+================+==============
1 | 15/1/2011 | 1 | 1
2 | 18/1/2011 | 1 | 1
3 | 25/1/2011 | 2 | 1
4 | 28/1/2011 | 3 | 1
Так что я хочу считать «кредиты» для вычета из их учетной записи. Таким образом, subscri ption - «суб-клиент».
Итак, в конце расчетного периода (30/1/2011 из первой таблицы). Мне нужно подсчитывать отдельных суб-клиентов (их 3). Они взимаются пропорционально с первой покупки, которую они совершают в течение платежного периода.
Days Having Subscription | SUBCUSTOMER_ID | Pro Rata Rate | CUSTOMER_ID
==========================+===================+==================+==============
3 | 3 | 3/30 | 1
6 | 2 | 6/30 | 1
16 | 1 | 16/30 | 1
Выход должен поэтому быть
CUSTOMER_ID | BILLING CREDITS
============+========================
1 | 25/30
я должен считать это пропорциональным, ранее это было бы несправедливо по отношению к счетам на весь период, даже если они закупаются пункт 1 день до даты выставления счетов
вы уверены, что ваши подписки не компенсируются '1'? Вы делите на '30', что означает, что« 1 »и« 30 »включены, но клиент' 4' был активным на '28',' 29' и '30', это делает' 3' дней, а не '2 '. – Quassnoi
Я считаю, что вы правы. Я обновлю его с правильным смещением. – Akshat