Условие WHERE в запросе hiveql, которое не возвращает результата - PullRequest
0 голосов
/ 27 мая 2020

Я выполнил три очень похожих запроса в оттенке, которые используют hiveql, два из них имеют условие (противоположные элементы). Я вообще не понимаю результатов:

select 
    distinct 
    product_id,
    price,
    rang,
    if(rang=1, 1, 0)
from (
    select 
        distinct 
        product_id, 
        price,
        row_number() OVER (PARTITION BY product_id order by col1 desc nulls last, col2 desc nulls last) rang
    from offer.offer_price
) op

==============> вернуть 1 строку:

product_id    price    rang    c4
prod_1        12.99    1       1

=== ================================================== ===

select 
    distinct 
    product_id,
    price,
    rang,
    if(rang=1, 1, 0)
from (
    select 
        distinct 
        product_id, 
        price,
        row_number() OVER (PARTITION BY product_id order by col1 desc nulls last, col2 desc nulls last) rang
    from offer.offer_price
) op
where if(rang=1, 1, 0)=1

==============> вернуть 0 строку

select 
    distinct 
    product_id,
    price,
    rang,
    if(rang=1, 1, 0)
from (
    select 
        distinct 
        product_id, 
        price,
        row_number() OVER (PARTITION BY product_id order by col1 desc nulls last, col2 desc nulls last) rang
    from offer.offer_price
) op
where if(rang=1, 1, 0)=0

=========== ===> вернуть 1 строку:

product_id    price    rang    c4
prod_1        12.99    1       1

================================= =======================

Почему третий запрос возвращает тот же результат, что и первый запрос, тогда как rang = 1? Кто-нибудь знает почему?

Большое спасибо.

Эмиль ie

...