Search code examples
mysqlsqlaverageaggregate-functions

How to calculate average of count per day in MySQL?


I have a table called SDON, and a query that counts the total number of pallets on each date of import. I wish to group these together and average the counts per month.

My count query:

SELECT COUNT(`storage unit`) AS `Pallets`, `import_date` 
FROM `SDON` 
GROUP BY `import_date`

query result

I wish for the following:

Average Pallets | Import Month
18500


Solution

  • You can group the results of your original query by year and month of the date:

    SELECT EXTRACT(YEAR_MONTH FROM import_date) AS import_month
         , AVG(day_total) AS average_per_day
    FROM (
        SELECT import_date
             , COUNT(`storage unit`) AS day_total
        FROM sdon
        GROUP BY import_date
    ) AS x
    GROUP BY EXTRACT(YEAR_MONTH FROM import_date)
    

    Converting a number such as 202207 to 2022-07 is trivial.