How can I identify when to create a new table to hold data that can be obtained from a query?
One issue not covered in the accepted answer is "do you need this value over time" and "will the formula possibly change". 

For instance consider the commision example. If the commission is paid, the amount should be stored as that is a historical figure of what was actually paid. The way to calulate commisions could change next month (and frequently does) but that won't change what was actually paid which must be stored separately. 

It is the same idea as storing the price the customer actually paid for a product (after a calculation of discounts etc.) rather than relying on a formula against a price table to do anything except the initial calculation because the product price next month might not be the same as what the price was when the cutomer made the order. 

If you need a historical record of what the value was at a point in time, always store that value after using the formula for the inital calulation.