结果不准确的情况

case when result inaccurate

SELECT
 DATE_TRUNC('day', payment.paid_at) AS "DAILY",
 COUNT(CASE WHEN product.type = 'A' THEN 1 ELSE NULL END) AS "A count",
 SUM(CASE WHEN product.type = 'A' AND payment.price_currency_code='USD' THEN payment.price_amount*1080 ELSE payment.price_amount END) AS "A revenue",
 COUNT(CASE WHEN product.type = 'B' THEN 1 ELSE NULL END) AS "B count",
 SUM(CASE WHEN product.type = 'B' AND payment.price_currency_code='USD' THEN payment.price_amount*1080 ELSE payment.price_amount END) AS "B revenue"

嗨,

我在使用时有疑问 "CASE WHEN" 我已经按照上面的方式编写了查询,但结果不准确。事实上,每个类别的收入总和计算出几乎相同的金额,而实际上它应该不同(尽管计数是正确的)。

如果您能指出我遗漏或做错的地方,我们将不胜感激!

谢谢:)

您的 ELSE 语句中存在错误,因为它包含了所有其他内容,而实际上您可能打算使用不同的条件:

SELECT
 DATE_TRUNC('day', payment.paid_at) AS "DAILY",
 COUNT(CASE WHEN product.type = 'A' THEN 1 END) AS "A count",
 SUM(CASE WHEN product.type = 'A' AND payment.price_currency_code='USD' THEN payment.price_amount*1080 WHEN product.type = 'A' THEN payment.price_amount END) AS "A revenue",
 COUNT(CASE WHEN product.type = 'B' THEN 1 END) AS "B count",
 SUM(CASE WHEN product.type = 'B' AND payment.price_currency_code='USD' THEN payment.price_amount*1080 WHEN product.type = 'B' THEN payment.price_amount END) AS "B revenue"

此外,在 case 语句中,ELSE NULL 不是必需的,因为 NULL 是不匹配的默认结果。