I'm not sure where you think the 2-3GB is missing?
Also you can simplify this in two ways:
union withsource = tt *
| where TimeGenerated between(startofmonth(now(),-1) .. endofmonth(now(),-1))
| summarize
TotalGBytes =round(sum(_BilledSize/(1024*1024*1024)),2)
by bin(TimeGenerated, 1d) //, Solution=tt
| summarize round(avg(TotalGBytes),2), min(TimeGenerated), max(TimeGenerated) // remove the min and max when you are happy
or using the Usage table (which is aggregated, so the query is much faster)
//let now_ = datetime("01/01/2023, 12:00:00.000 AM"); // use to test if Jan returns December date
let now_ = now();
Usage
| where TimeGenerated between (startofmonth(now_,-1) .. endofmonth(now_,-1))
| summarize
TotalGBytes =round(sum(Quantity/1000),2)
by bin(TimeGenerated, 1d)
| summarize round(avg(TotalGBytes),2), min(TimeGenerated), max(TimeGenerated)