表格有销售额,我正在尝试计算销售额和占总额的百分比。
WITH t1 AS (
SELECT
product_id,
sum(financial_charge_cents) as cents
FROM "account_charges"
WHERE account_id = 5
AND status = 'Charged'
GROUP BY product_id
ORDER BY cents DESC
)
SELECT
product_id,
cast(cents as money) / 100.0 AS dollars,
cents / (sum(cents) OVER (PARTITION BY product_id)) as percent
FROM t1
ORDER BY dollars DESC
但这会将所有百分比返回为 1
并且不确定原因。
不确定这是类型问题还是什么。
最佳答案
OVER (PARTITION BY produuct_id)
导致总和与 cents
相同。您不需要分区:
SELECT
product_id,
cast(cents as money) / 100.0 AS dollars,
cents* 1.0 / (sum(cents) OVER ()) as percent
FROM t1
ORDER BY dollars DESC
请注意,我添加了 *1.0
以获得数字结果。如果 cents
是数字(不是整数),请跳过它。
关于PostgreSQL 子查询总数和百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47318397/