2012-03-29 2 views
3

j'ai une table quelque chose ruche comme ceci:Ruche: trouver de la valeur maximum dans un groupe par

create external table test(
    test_id string, 
    test_name string, 
    description string, 
    clicks int, 
    last_referred_click_date string 
) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' 
STORED AS TEXTFILE LOCATION '{some_location}'; 

Je dois trouver sur le total des clics pour un test_id et la dernière date de clic (date max dans ce groupe de test_id)

que je fais quelque chose comme ça

insert overwrite table test partition(weekending='{input_date}') 
    select s.test_id,s.test_name,s.description,max(click_date), 
    sum(t.click) as clicks 
    group by s.test_id,s.test_name,s.description order by clicks desc; 

ne fonctionne max() fonctionne pour les chaînes? Mon click_date est de format 'aaaa-mm-jj' et est un type de données string? Si non, que puis-je faire ici? UDF?

Répondre

1
SELECT s.test_id, 
     s.test_name, 
     s.description, 
     MAX(CAST(last_referred_click_date as DateTime)), 
     sum(t.clicks) as Total_Clicks 
FROM test s 
WHERE s.test_id=1 
GROUP BY s.test_id,s.test_name,s.description 
ORDER BY clicks desc; 
Questions connexes