Eliminando registros duplicados con ids antiguas en SQL/ HiveQL
Tengo una tabla como la siguiente. En esta tabla tenemos múltiples registros idénticos con solo un refresh_id diferente. Pero tenemos que seleccionar los registros con el último refresh_id, por ejemplo, tenemos que eliminar las filas en negrita/resaltado ya que sus duplicados están disponibles con el último refresh_id. Por favor ayúdame a resolver este problema usando SQL/HiveQL.
día | idde producto | refreshid | ||
---|---|---|---|---|
11/19/2021 | abcd | 1637515839 | ||
11/19/2021 | abcd | 1637515839 | ||
11/19/2021 | abcd | 1637515839 | ||
11/19/2021 | abcd | 1637515839 | ||
11/19/2021 | abcd | 1637430516 | ||
11/19/2021 | efgh | 1637430516 | ||
12/11/2021 | ijkl | 1637430516 | ||
12/11/2021 | ijkl | 1637430250 |
Salida:
día | idde producto | refreshid |
---|---|---|
11/19/2021 | abcd | 1637515839 |
11/19/2021 | abcd | 1637515839 |
11/19/2021 | abcd | 1637515839 |
11/19/2021 | abcd | 1637515839 |
11/19/2021 | efgh | 1637430516 |
12/11/2021 | ijkl | 1637430516 |
He intentado la siguiente consulta como un intento pero no parece ayudar en absoluto, por favor dame alguna pista.
select mod_op.day, mod_op.id_de_producto, mod_op.refresh_id
, dense_rank() over(partition by mod_op.day,mod_op.id_de_producto order by mod_op.refresh_id desc) as dense_rank
from tabla mod_op
where mod_op.refresh_id in (refresh_id1, refresh_id2);
davy.ai
Para seleccionar los registros con el último refresh_id y eliminar los duplicados, puede utilizar la siguiente consulta SQL/HiveQL:
Aquí, utilizamos una subconsulta para asignar un número de fila a cada registro basado en su refresh_id dentro de cada combinación de día y product_id. Luego, seleccionamos solo los registros donde el número de fila es 1, lo que corresponde al último refresh_id para cada combinación.
Esta consulta le debería dar el resultado deseado, como se muestra en la tabla a continuación: