Существует ли функция SQL, которая перезапускает подсчет строк каждые 3 строки?

#sql #count #subset #partition #row-number

#sql #граф #подмножество #раздел #номер строки

Вопрос:

Я хотел бы использовать функцию подсчета строк для подсчета каждых трех строк, чтобы мой результат был похож на то, что показано ниже. Я пытался использовать ROW_NUMBER, NTILE и RANK, однако я не могу найти способ разбить или подмножество на группы по 3. Как я могу сгенерировать количество строк, подобное тому, что показано ниже?

Еда Количество строк
Apple 1
Банан 2
Груша 3
Виноград 1
Оранжевый 2
Авокадо 3

Комментарии:

1. Как вы сортируете строки? Кажется, порядка нет.

2. Справедливый вопрос — таблица должна быть упорядочена в алфавитном порядке по еде. Оглядываясь назад, я бы отобразил таблицу таким образом с тем же шаблоном 1,2,3,1,2,3 по убыванию

Ответ №1:

Нет, но вы можете использовать арифметику — при условии, что у вас есть столбец, задающий порядок. Типичный метод:

 select t.*
       row_number() over (order by <ordering col>) % 3 as row_count
from t;
 

Обратите внимание, что % это оператор по модулю. Некоторые базы данных используют MOD() в качестве функции или инфиксного оператора для той же цели.

Комментарии:

1. @DestructionBringer00 Этот ответ должен быть принят.