This object model is not going to work especially well for you. You cannot SUM()
record values unless they are related via a Master-Detail relationship (using a Roll-up Summary Field), and you do not have that here. You can't create that relationship here either, because Opportunity is a standard object and cannot be made the detail side of a custom Master-Detail relationship.
I'm assuming that your reporting needs are more complex than a native Salesforce report can handle, but before you embark on development, I'd encourage trying to fit this summarizing into a Summary Report - it'll save you a lot of work if that native functionality can get it done.
The way to actually do rollups with no custom development is to go install Declarative Lookup Rollup Summaries. You can use that free, open source tool to build a rollup across a lookup relationship, such as between your Opportunity and its associated Sales Rep (whether that's a User or a custom object). Note that DLRS doesn't roll up into separate records: it stores the rollup results on one of the objects that's part of the relationship, helping to make it possible to report directly on those objects rather than create new records just for reporting processes.
Hence, you can total Opportunity values to fields on the Sales Rep and report directly on the Sales Rep, with no need for additional reporting-only objects.
If you need totaling at a monthly level, you can use date literals in your DLRS rollup filters (like CloseDate = THIS_MONTH
) and schedule the rollup to run on the 1st of each month to refresh all of your data. The rollup can also run in real time, so that throughout the month you have live data.