Сумма с условиями в Snowflake

#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;