sql - que - left semi join hive
Encontrar el precio más bajo para cada categoría usando join sql en Hive (2)
Puedes usar las funciones de ventana:
select pc.*
from (select pi.*, cpm.category_id,
row_number() over (partition by cpm.category_id order by pi.price asc) as seqnum
from product_info pi join
category_product_match cpm
on cpm.product_id = pi.prd_id
) pc
where seqnum = 1;
Tengo que escribir Hive SQL.
Quiero encontrar el precio más bajo para cada categoría. Quiero obtener una fila para cada categoría con la identificación de la categoría, la identificación del producto, el precio (precio más bajo) y las columnas de la url de la imagen. En el siguiente ejemplo, finalmente necesitamos dos filas.
Ayuadame. Gracias.
Tabla "category_product_match"
category_id product_id
1001 500001
1001 500002
1002 500101
1002 500102
1002 500103
Tabla "product_info"
prd_id price img_url
500001 29000 /app/url/img/500001.jpg
500002 29500 /app/url/img/500002.jpg
500101 8100 /app/url/img/500101.jpg
500102 8100 /app/url/img/500102.jpg
500103 8500 /app/url/img/500103.jpg
utilizar la función de agregado mínimo con unión interna y agrupar con id de categoría
Select category_id ,product_id, Min(price) as lowest_Price,img_url
from category_product_match
inner join product_info on product_id=prd_id
group by category_id;
Demostración aquí Sqlfiddle