0

我在 Stripe 网站上的 Stripe sigma 应用程序中工作,我正在尝试按国家/地区计算收入。当客户填写他们的付款信息时,他们被要求输入他们的国家,但有些人没有这样做。该列称为 card_country_address。处理付款时,发卡的国家也记录在名为 card_country 的列中。

在此处输入图像描述

在计算收入时,我将金额相加并按 card_country_address 分组。但是,由于客户没有填写正确的信息,导致出现空值,因此我的 card_address_country 中有 1 个空白值和未分配的美元金额。因此,我想用 card_country 中的值替换空值并将其包含在计算中。

我读到我可以用 COALESCE 替换空值,并且我已经编写了一个语句来这样做,但是我不确定如何将它正确地包含在一个完整的语句中。

这是我所拥有的:

SELECT COALESCE(card_address_country, card_country)
FROM charges
WHERE card_address_country IS NULL

这似乎正确地替换了空值。我必须按国家/地区计算收入的声明是:

SELECT card_address_country AS "Country", sum(amount) AS "Total Revenue"
FROM charges
WHERE amount_refunded = 0 and paid = true
GROUP BY card_address_country
ORDER BY sum(amount) DESC

这是我在使用此语句时遇到的问题:

在此处输入图像描述

12,934,033 美元计算不正确,因为 card_address_country 对于许多交易为空。

我知道有些人可能会想,然后按 card_country 分组。但是,此列还包含空值,我仍然必须这样做并从 card_country_address 添加缺少的国家/地区代码。此外,card_address_country 和 card_country 并不总是相同的。我使用 card_address_country 是因为我想知道客户是从哪里购买的。

如何将带有 COALESCE 的语句包含在主语句中,以便我可以正确分配链接到 null 的金额?这甚至是正确的方法还是有更好的方法来替换和计算值?

4

1 回答 1

0

看起来GROUP BY COALESCE(card_address_country, card_country)会得到想要的结果集

SELECT COALESCE(card_address_country, card_country) AS "Country", SUM(amount) AS "Total Revenue"
FROM charges
WHERE amount_refunded = 0 and paid = true
GROUP BY COALESCE(card_address_country, card_country)
ORDER BY SUM(amount) DESC
于 2021-11-13T04:00:57.333 回答