This is not a hive but a SQL question. You need to be more clear about your data, and try to think a way to solve your problem. Without the detail about your data, no easy way to answer your question. For example, just based on your example data you provide, does the 'abc' and 'cde' only happen once per user? Does the 'abc' timestamp is always before or after 'cde' timestamp? There is a lot of ways to archive your output, but you need to confirm your data. 1) Assume that each user will only have one 'abc' and 'cde', and if the 'abc' timestamp is always before the 'cde' timestamp, then it is very easy: select user_id, min(visting_time) as cde_time, max(visting_time) as abc_timefrom tablewhere visting_web_page contains 'abc' or visting_web_page contains 'cde'group by user_id
2) If the 'abc' and 'cde' visiting_time is randome, but each user will only have one 'abc' and 'cde', it is still not too hard, you just use the case() + max() from hive: select user_id, max( case when visting_web_page contains 'cde' then visting_time else null end ) as cde_time, max( case when visting_web_page contains 'abc' then visting_time else null end ) as abc_timefrom tablegroup by user_id The trick is simple, you use case function to return timestamp if it is the 'cde' row, else return null; then apply max on top of it. Since everything is larger than NULL in max, you will get the cde time stamp. 3) If each user could have more than one 'abc' or 'cde', then you need to decide which one you want it out. Yong Date: Fri, 2 Nov 2012 22:35:42 -0500 Subject: need help on writing hive query From: qiaoresearc...@gmail.com To: user@hive.apache.org The table format is something like: user_id á ávisiting_time á á ávisiting_web_pageuser1 á á á á átime11 á á á á á á page_string_11 user1 á á á á átime12 á á á á á á page_string_12 á á with keyword 'abc' user1 á á á á átime13 á á á á á á page_string_13 user1 á á á á átime14 á á á á á á page_string_14 á á with keyword 'cde' user1 á á á á átime15 á á á á á á page_string_15 á ... á á á á á á á á... á á á á á á á á á á á .....áuser2 á á á á átime21 á á á á á á page_string_21 user2 á á á á átime22 á á á á á á page_string_22 á ááuser2 á á á á átime23 á á á á á á page_string_23 á ááwith keyword 'abc' user2 á á á á átime24 á á á á á á page_string_24 á áá user2 á á á á átime25 á á á á á á page_string_25 á ááwith keyword 'cde'á á.... á á á á á á á..... á á á á á á á á á á á .... á á á á how to obtain output like: áuser1 á átime14 - time12 ááuser2 á átime25 - time23á á... á á á á á ............. i.e, we need to first search keyword 'abc' in the visiting_web_page column to locate the first visiting_time, then search for the second visiting_time with keyword 'cde', and repeat the procedure for each user... thanks in advance! á á á