У меня есть таблица t1:Выбор последней строки в разделе в энцефалопатией
c1 | c2 | c3| c4
1 1 1 A
1 1 2 B
1 1 3 C
1 1 4 D
1 1 4 E
1 1 4 F
2 2 1 A
2 2 2 A
2 2 3 A
Я хочу, чтобы выбрать последнюю строку каждого c1, c2 пары. Итак, (1,1,4, F) и (2,2,3, A) в этом случае. Моя идея - сделать что-то вроде этого:
create table t2 as
select *, row_number() over (partition by c1, c2 order by c3) as rank
from t1
create table t3 as
select a.c1, a.c2, a.c3, a.c4
from t2 a
inner join
(select c1, c2, max(rank) as maxrank
from t2
group by c1, c2
)
on a.c1=b.c1 and a.c2=b.c1
where a.rank=b.maxrank
Будет ли это работать? (Вопросы окружающей среды Имея поэтому не может проверить себя)
mysql не имеет функции 'row_number'. –
Отредактировано для удаления тега mysql, извините за это. – Danzo
Нет подсказки о hiveql, но я думаю, вы должны иметь возможность изменить 'row_number()', чтобы он упорядочивался по убыванию. Затем вы можете просто выбрать строки с «rank = 1». –