SQL если условие истинно, считать только один раз - PullRequest
0 голосов
/ 29 августа 2018

У меня есть таблица с тремя столбцами: Имя, Страна, Цена, и мне нужен запрос SQL, который создает четвертый столбец Boolean с именем Qualify. Этот столбец должен быть истинным, если цена <100, и нет другой строки с ценой <100 и той же страны. </p>

Пример:

Name   - Country- Price-  Qualify
Daniel - ES   -   98    - TRUE 
John  -  PT   -   45   -  TRUE 
Maria  - UK   -   102   - FALSE 
Anna   - PT   -   31   -  FALSE (because there is already a row with PT and Price<100)
Joseph - UK   -   25   -  TRUE 
Miriam  -DK   -   105  -  FALSE   

Все это потому, что я не хочу считать объемы более одного раза, если цена ниже 100, а страна одна и та же. Это вообще возможно? Спасибо

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Просто предоставив другую опцию, используя оператор CASE:

Select 
@row_number:=CASE
        WHEN @country = Country AND Price < 100 AND @price < 100  
        THEN 1
        ELSE 0 END AS Qualify,
@country:= Country As Country,
@price:= Price As Price
FROM
Test
ORDER BY Country, Price

Вот демоверсия

0 голосов
/ 29 августа 2018

Думайте exists. В MySQL вам даже не нужно выражение case:

select t.*,
       (t.price < 100 and
        not exists (select 1
                    from t t2
                    where t2.country = t.country and t2.name <> t.name and t2.price < 100
                   )
       ) as flag
from t;

Предполагается, что name уникально, по крайней мере, для страны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...