Hello!
I would like to do a LEFT JOIN LATERAL .. Which is using values on the LHS as 
parameters on the RHS. Is this sort of thing possible in Hive? 


-JD


---- Some example SQL:


create table lhs (
    subject_id integer,
    date_time  BIGINT
);

       —Subjects and responses at Arbitrary response times:
       insert into lhs (subject_id, date_time) values (1,1000);
       insert into lhs (subject_id, date_time) values (1,1100);
       insert into lhs (subject_id, date_time) values (1,2000);
       insert into lhs (subject_id, date_time) values (2,1002);
       insert into lhs (subject_id, date_time) values (2,1998);

create table events (
    subject_id  integer,
    date_time   BIGINT,
    event_val   integer
);

SELECT * from lhs LEFT JOIN LATERAL ( select SUM(event_val) as val_sum, 
count(event_val) as ecnt from events WHERE date_time < lhs.date_time and 
subject_id = lhs.subject_id ) rhs1 ON true;


       insert into events (subject_id, date_time, event_val) values (1,999, 1);
       insert into events (subject_id, date_time, event_val) values (1,1000, 2);
       insert into events (subject_id, date_time, event_val) values (1,1001, 3);
       insert into events (subject_id, date_time, event_val) values (1,1999, 4);
       insert into events (subject_id, date_time, event_val) values (1,2000, 5);
       insert into events (subject_id, date_time, event_val) values (1,2001, 6);

       insert into events (subject_id, date_time, event_val) values (2,999, 10);
       insert into events (subject_id, date_time, event_val) values (2,1000, 
20);
       insert into events (subject_id, date_time, event_val) values (2,1001, 
30);
       insert into events (subject_id, date_time, event_val) values (2,1999, 
40);
       insert into events (subject_id, date_time, event_val) values (2,2000, 
50);
       insert into events (subject_id, date_time, event_val) values (2,2001, 
60);

       SELECT * from lhs LEFT JOIN LATERAL ( select SUM(event_val) as val_sum, 
count(event_val) as ecnt from events WHERE date_time < lhs.date_time and 
subject_id = lhs.subject_id ) rhs1 ON true;

       —results:
       subject_id;date_time;val_sum;ecnt
       1;1000;1;1
       1;1100;6;3
       1;2000;10;4
       2;1002;60;3
       2;1998;60;3


Reply via email to