我有一张表格,其中包含通过通信的用户进行的存款数量。但我无法根据每个项目中用户的平均存款数量来获取,具体取决于状态 - 用户是否收到了电子邮件。
代码:
select a.project_id, player_external_id, COUNT (player_external_id)
FROM gamestorage.exchanged_orders a
INNER JOIN gameanalytics.users_analytics b
ON a.player_external_id = b.external_id
WHERE TYPE ='deposit'
and status='success'
and payment_type='normal'
and amount>=0
and receive_emails = true
Group BY 1,2
当然,我可以进行两个查询,例如
receive_
emails = true, receive
_email = false
,然后找到平均值,遭受大量行的困扰并进行双重工作。但我非常确定有更方便的方法。我应该如何根据通信状态过滤和转换结果(“receive_emails”列)?
其他方式:
select a.project_id, player_external_id, COUNT (player_external_id)
, COUNT(CASE WHEN receive_emails = true THEN player_external_id ELSE NULL END) / COUNT (player_external_id)
, COUNT(CASE WHEN receive_emails = false THEN player_external_id ELSE NULL END) / COUNT (player_external_id)
FROM gamestorage.exchanged_orders a
INNER JOIN gameanalytics.users_analytics b
ON a.player_external_id = b.external_id
WHERE TYPE ='deposit'
and status='success'
and payment_type='normal'
and amount>=0
Group BY 1,2