#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 Этот ответ должен быть принят.