Позиция каждого х строк в группе

Например, у меня есть таблица (ранг увеличивается на единицу каждый день):

Rank,day 
1  ,sunday 
1  ,sunday 
1  ,sunday 
1  ,sunday 
2  ,monday 
3  ,friday

и я хочу добавить новый вызов столбца "группа", который увеличивается на 1 каждые 3 строки для каждой группы. Например: ( 4 строки для дня: воскресенье, поэтому первые 3 строки будут 1, а от 4 до 6 строки 2 и т. д....):

Rank,group,day 
1 ,1 ,sunday 
1 ,1 ,sunday 
1 ,1 ,sunday 
1 ,2 ,sunday 
2 ,1 ,monday 
3 ,1 ,friday

Как я могу добавить группу столбцов с помощью plsql?

Я не могу использовать rownum, потому что я использовал функцию row_number для первого столбца "Ранг".

Благодарю.

РЕДАКТИРОВАТЬ: 07-ноябрь-18:

Я хочу добавить еще один критерий для столбца рейтинга под названием время. например:

Rank,group,day,time
1 ,1 ,sunday ,08:00 
1 ,1 ,sunday ,08:00
2 ,1 ,sunday ,09:00
3 ,2 ,sunday ,10:00
4 ,1 ,monday ,08:00
5 ,1 ,friday ,09:00
5 ,1 ,friday ,09:00

любой совет?

2 ответа

Решение

Вы можете сделать это с помощью row_number() аналитическая функция для присвоения номера каждой строке в группе. Затем вы можете разделить каждый номер строки на 3 и найти потолок этого числа. Это означает, что первые три строки в группе будут иметь значение 1, следующие три 2 и т. Д.:

WITH your_table AS (SELECT 1 rnk, 'sunday' dy FROM dual UNION ALL
                    SELECT 1 rnk, 'sunday' dy FROM dual UNION ALL
                    SELECT 1 rnk, 'sunday' dy FROM dual UNION ALL
                    SELECT 1 rnk, 'sunday' dy FROM dual UNION ALL
                    SELECT 2 rnk, 'monday' dy FROM dual UNION ALL
                    SELECT 3 rnk, 'friday' dy FROM dual)
SELECT rnk,
       dy,
       ceil(row_number() over (PARTITION BY rnk ORDER BY dy)/3) grp
FROM   your_table
ORDER BY rnk, dy, grp;

       RNK DY            GRP
---------- ------ ----------
         1 sunday          1
         1 sunday          1
         1 sunday          1
         1 sunday          2
         2 monday          1
         3 friday          1

Пожалуйста, проверьте обновление от 07 ноября 2018 года.

Другие вопросы по тегам