Я пытаюсь создать вывод логических значений на основе некоторых условий.
OutPut:
EX: I have 3 rules/conditions from different tables which are not related to each other.
Rule 1:
Select USER_NAME, ID from session_user where age > 25
Правило 2:
Select USER_NAME, ID from current_user where plan = 'gold'
Правило 3:
Select USER_NAME, ID from customer where group_name='managers'
My OutPut Должен быть:
USER_NAME | ID | Rule 1 | Rule 2 | Rule 3
user1 1 true false true
user2 2 false true true
user3 3 true true true
Если user1
передает правило 1, значение должно быть true
для него на выходе, если он прошел rule 2
, то true
иначе false
.
Решение:
SELECT dp.USER_NAME,
dp.ID,
CASE
WHEN dp.sex='F' THEN 'True'
ELSE 'False'
END AS Rule_1,
CASE
WHEN dp.sex='M' THEN 'True'
ELSE 'False'
END AS Rule_2,
CASE
WHEN dp.sex not in ('M','F') THEN 'True'
ELSE 'False'
END AS Rule_3
FROM user_details dp where dp.Organisation='007';
Вопрос:
- Является ли указанное выше выражение select эффективным способом в PRESTO?
- Если нет, то каковы другие варианты?
- Я новичок в PRESTO, поэтому его сложно использовать при выборе. Как мне сформировать аналогичный вывод, когда я присоединяюсь к нескольким таблицам? любые ссылки do c будут полезны для дальнейшего понимания.
- С
CASE
я не могу использовать COUNT
, как я могу добавить правило, если я хочу, чтобы COUNT
больше 2. (Count (*)> 0) = True else False. - Можем ли мы использовать
SubQuery
в CASE
? Повлияет ли это на производительность?