I want to count payment within selected date, but i can’t figure it out how to do it.
Here is the example data from the my table
id starts_from payment_per_day
=======================================
1 2012-01-01 10,000.00
2 2012-01-15 10,500.00
3 2012-02-01 11,000.00
4 2012-02-15 11,500.00
5 2012-03-01 12,000.00
How do i count total payment from 2012-01-21 to 2012-02-20 ?
The total payment should be 338,500
from 2012-01-21 to 2012-01-31 = 11 days * 10,500
from 2012-02-01 to 2012-02-14 = 14 days * 11,000
from 2012-02-15 to 2012-02-20 = 6 days * 11,500
But if i do :
SELECT SUM(payment_per_day) as total FROM table
WHERE starts_from BETWEEN '2012-01-21' AND '2012-02-20'
the result is only 22,500
Any ideas ?
I would first expand the range into the list of dates, then use the following query:
You could obtain the list from the range with the help of a numbers table, like this:
A numbers table is a thing worth having as it can be useful in many situations, so consider providing yourself with one. Here’s a very simple script to create and initialise a numbers table:
But, of course, you can use a loop instead.
Here’s my complete testing environment on SQL Fiddle (for anyone to play with).