#sql #snowflake-cloud-data-platform
Вопрос:
Я пытаюсь написать запрос с использованием Snowflake, в котором я хочу суммировать общий платеж пользователя, имеющего несколько учетных записей (одно электронное письмо может создавать несколько учетных записей, да).
Если хотя бы одна учетная запись в данный момент активна, я хочу суммировать общую сумму выплаченных денег (всю историю платежей для этого пользователя), независимо от того, активна учетная запись или нет.
Столбцы, которые я использую:
CustomerEmail
Active
Total_Paid
Комментарии:
1. без схемы БД вам будет сложно помочь
Ответ №1:
Что-то вроде этого?
select customeremail, sum(total_paid)
from test
where customeremail IN (select customeremail from test where active =true )
group by customeremail;
Комментарии:
1. Разве это не будет суммировать только общую сумму, выплаченную только активным учетным записям? Возможно, я не был ясен в своем вопросе, если хотя бы одна учетная запись активна, я хочу суммировать общую сумму оплаченных платежей, которые были сделаны с использованием этого электронного письма для всех его учетных записей (активных и неактивных учетных записей)… если у пользователя нет активной учетной записи, он пропустит ее
2. Нет, этого не будет. Он будет суммировать общую сумму, выплаченную для всех клиентов, у которых есть хотя бы одна активная учетная запись. Можете ли вы попробовать запустить его в своей среде?
Ответ №2:
Используя HAVING и COUNT_IF:
SELECT customeremail, SUM(total_paid) AS total
FROM test
GROUP BY customeremail
HAVING COUNT_IF(active) > 0;