diff --git a/pkg/datastore/page_stats.go b/pkg/datastore/page_stats.go index 4b64ce0..4b51966 100644 --- a/pkg/datastore/page_stats.go +++ b/pkg/datastore/page_stats.go @@ -30,7 +30,7 @@ func UpdatePageStats(s *models.PageStats) error { func GetAggregatedPageStats(startDate time.Time, endDate time.Time, limit int) ([]*models.PageStats, error) { var result []*models.PageStats - query := dbx.Rebind(`SELECT hostname, pathname, SUM(pageviews) AS pageviews, SUM(visitors) AS visitors, SUM(entries) AS entries, ROUND(AVG(bounce_rate), 4) AS bounce_rate, ROUND(AVG(avg_duration), 4) AS avg_duration FROM daily_page_stats WHERE date >= ? AND date <= ? GROUP BY hostname, pathname ORDER BY pageviews DESC LIMIT ?`) + query := dbx.Rebind(`SELECT hostname, pathname, SUM(pageviews) AS pageviews, SUM(visitors) AS visitors, SUM(entries) AS entries, COALESCE(ROUND(SUM(entries*bounce_rate)/SUM(entries), 4), 0.00) AS bounce_rate, COALESCE(ROUND(SUM(avg_duration*pageviews)/SUM(pageviews), 4), 0.00) AS avg_duration FROM daily_page_stats WHERE date >= ? AND date <= ? GROUP BY hostname, pathname ORDER BY pageviews DESC LIMIT ?`) err := dbx.Select(&result, query, startDate.Format("2006-01-02"), endDate.Format("2006-01-02"), limit) return result, err } diff --git a/pkg/datastore/referrer_stats.go b/pkg/datastore/referrer_stats.go index 8fdf7dd..1e5d312 100644 --- a/pkg/datastore/referrer_stats.go +++ b/pkg/datastore/referrer_stats.go @@ -31,7 +31,7 @@ func UpdateReferrerStats(s *models.ReferrerStats) error { func GetAggregatedReferrerStats(startDate time.Time, endDate time.Time, limit int) ([]*models.ReferrerStats, error) { var result []*models.ReferrerStats - query := dbx.Rebind(`SELECT url, SUM(visitors) AS visitors, SUM(pageviews) AS pageviews, ROUND(AVG(avg_duration), 4) AS avg_duration, ROUND(AVG(bounce_rate), 4) AS bounce_rate FROM daily_referrer_stats WHERE date >= ? AND date <= ? GROUP BY url ORDER BY pageviews DESC LIMIT ?`) + query := dbx.Rebind(`SELECT url, SUM(visitors) AS visitors, SUM(pageviews) AS pageviews, COALESCE(ROUND(SUM(pageviews*bounce_rate)/SUM(pageviews), 4), 0.00) AS bounce_rate, COALESCE(ROUND(SUM(avg_duration*pageviews)/SUM(pageviews), 4), 0.00) AS avg_duration FROM daily_referrer_stats WHERE date >= ? AND date <= ? GROUP BY url ORDER BY pageviews DESC LIMIT ?`) err := dbx.Select(&result, query, startDate.Format("2006-01-02"), endDate.Format("2006-01-02"), limit) return result, err }