Start a conversation ↗

FORMULA & SQL / TOTALS

Count rows for each month.
Tested, not guessed.

The Excel and Google Sheets formula and the SQL query, each run on the rows below. Open this with your own data ↗

The example rows

RowA: RegionB: RepC: AmountD: Order DateE: StatusF: Customer
2NorthAna1,2002026-03-01PaidJo Smith
3SouthBen4502026-03-15OpenRaj Patel
4NorthCy3002026-04-02PaidLee Wong
5EastAna980.502026-04-20PaidMia Ross
6NorthBen752026-05-05OpenJo Smith
7WestDee1,6402026-05-18PaidSam Okoro

The formula

Excel
=COUNTIFS(D:D,">="&EOMONTH(D2,-1)+1,D:D,"<="&EOMONTH(D2,0))

The number of rows where the Order Date column (D:D) is at least the last day of the month minus 1 months from Order Date (D2) plus 1 and the Order Date column (D:D) is at most the last day of the month 0 months from Order Date (D2).

Gives each row the count for its month.

Run on the example rows:

RowResult
22
32
42
52
62
72

The SQL

PostgreSQL
SELECT DATE_TRUNC('month', order_date) AS month_start, COUNT(*) AS row_count
FROM sales
GROUP BY 1
ORDER BY 1

Run on the example rows:

month_startrow_count
2026-03-012
2026-04-012
2026-05-012
Other databases
MySQL
SELECT DATE_FORMAT(order_date, '%Y-%m-01') AS month_start, COUNT(*) AS row_count
FROM sales
GROUP BY 1
ORDER BY 1
SQL Server
SELECT DATEFROMPARTS(YEAR(order_date), MONTH(order_date), 1) AS month_start, COUNT(*) AS row_count
FROM sales
GROUP BY 1
ORDER BY 1
SQLite
SELECT strftime('%Y-%m-01', order_date) AS month_start, COUNT(*) AS row_count
FROM sales
GROUP BY 1
ORDER BY 1
BigQuery
SELECT DATE_TRUNC(order_date, MONTH) AS month_start, COUNT(*) AS row_count
FROM sales
GROUP BY 1
ORDER BY 1
Snowflake
SELECT DATE_TRUNC('month', order_date) AS month_start, COUNT(*) AS row_count
FROM sales
GROUP BY 1
ORDER BY 1

Your own data

Paste your rows into the free tool and it writes this for your columns, then runs it on your data before you copy it. Open the tool ↗

Bring us the problem. We'll work through the system.

Your next
hard problem.↗