bảng là:hive sql tìm ra kỷ lục mới nhất
create table test (
id string,
name string,
age string,
modified string)
dữ liệu như thế này:
id name age modifed
1 a 10 2011-11-11 11:11:11
1 a 11 2012-11-11 12:00:00
2 b 20 2012-12-10 10:11:12
2 b 20 2012-12-10 10:11:12
2 b 20 2012-12-12 10:11:12
2 b 20 2012-12-15 10:11:12
Tôi muốn để có được những kỷ lục mới nhất (bao gồm tất cả các colums id, tên, tuổi, modifed) nhóm bởi id, như các dữ liệu trên, kết quả đúng là:
1 a 11 2012-11-11 12:00:00
2 b 20 2012-12-15 10:11:12
tôi làm như thế này:
insert overwrite table t
select b.id, b.name, b.age, b.modified
from (
select id,max(modified) as modified
from test
group by id
) a
left outer join test b on (a.id=b.id and a.modified=b.modified);
sql này có thể nhận được kết quả phù hợp, nhưng khi dữ liệu khối lượng , nó chạy chậm.
** Có cách nào để thực hiện việc này mà không cần tham gia bên ngoài bên trái không? **
cảm ơn câu hỏi và câu trả lời, họ đã giải quyết hoàn toàn vấn đề của tôi! – eleforest