Простое решение, если вы заказываете по номеру телефона:
SELECT State, Zip, Areacode, Phone, `Index` FROM (
SELECT State,
Zip,
Areacode,
Phone,
@Idx := IF(@previous_phone=Phone, IFNULL(@Idx,0)+1,1) as Index,
@previous_phone := Phone
FROM table
ORDER BY Phone
) t;
Это просто отслеживает предыдущий номер телефона и сбрасывает индекс, если он изменяется.
Если вы хотите сосчитать дубликаты для комбинации Zip Area Phone, то вы можете сравнить на основе CONCAT(Zip,Area,Phone)
например
SELECT State, Zip, Areacode, Phone, `Index` FROM (
SELECT State,
Zip,
Areacode,
Phone,
@Idx := IF(@previous_phone=CONCAT(Zip, Area, Phone), IFNULL(@Idx,0)+1,1) as Index,
@previous_phone := CONCAT(Zip, Area, Phone)
FROM table
ORDER BY Zip, Area, Phone
) t;