Во-первых, давайте получим дату первого посещения каждого клиента:
SELECT
Customer_name,
MIN( [date] ) AS firstDate
FROM
[TheTable]
GROUP BY
Customer_name
Затем давайте получим информацию о месяце для этих firstDate
значений (см. Как выбрать первый деньмесяц в SQL? ):
SELECT
Customer_name,
DATEFROMPARTS( YEAR( MIN( [date] ) ), MONTH( MIN( [date] ) ), 1 ) AS monthOfFirstDate
FROM
[TheTable]
GROUP BY
Customer_name
Затем мы можем агрегировать эти данные, чтобы получить число клиентов, имеющих один и тот же месяц первой даты (и удалить столбец Customer_name
из SELECT
который нам больше не нужен):
SELECT
monthOfFirstDate,
COUNT( * ) AS newCustomers
FROM
(
SELECT
DATEFROMPARTS( YEAR( MIN( [date] ) ), MONTH( MIN( [date] ) ), 1 ) AS monthOfFirstDate
FROM
[TheTable]
GROUP BY
Customer_name
) AS customersFirstDateMonths
ORDER BY
monthOfFirstDate