Мое решение использует ROW_NUMBER, чтобы присвоить значение каждой строке, а затем применяет функцию MOD, чтобы разделить его на 5.Хотя это работает, я думаю, что другое решение, использующее NTILE, является более чистым.
WITH cust AS
(SELECT customername, ROW_NUMBER() OVER(ORDER BY customer_name) AS ordering
FROM customers)
SELECT customername , CASE WHEN MOD(ordering,5) = 0 THEN 5 ELSE MOD(ordering,5) END AS bucket
FROM cust;