[英]PSQL: sum doesn't work on fields
我有这个查询有效:
SELECT
partners.name,
roles.name,
(SELECT count(*) FROM partner_member_bindings WHERE roles.id = partner_member_bindings.role_id AND verify_status != 'pending') AS Num_verifications,
CAST(roles.price_partner / 100 AS money) AS partner_price
FROM partners
JOIN roles ON roles.partner_id = partners.id
ORDER BY partners.name, roles.name
我想要显示一个附加字段,以美元显示“ partner_price * Num_verifications”值。 我无能为力:
sum(Num_verifications * partner_price)返回Num_verification不存在。 复制整个子查询(是的,我知道,但是我只是在测试)也无法正常工作。
如何才能做到这一点?
select中的字段只能包含输入列,并且在运行时它们将成为输出列。 这就是为什么您不能在另一个列定义中使用计算列的原因。
但是,如果您想要SUM
,则意味着某种聚合。 如果您想要字段相乘的总和,通常不按行进行。 还是只需要乘法结果? 这通常是在表示层中完成的。
如果只需要乘法(因为总之就没有GROUP BY
SUM
),则可以将整个查询放入子查询中并从中进行计算,而将排序放在外面:
SELECT
partnername,
rolename,
Num_verifications,
partner_price,
partner_price*Num_verifications
FROM
(SELECT
partners.name as partnername,
roles.name as rolename,
(SELECT count(*) FROM partner_member_bindings WHERE roles.id = partner_member_bindings.role_id AND verify_status != 'pending') AS Num_verifications,
CAST(roles.price_partner / 100 AS money) AS partner_price
FROM partners
JOIN roles ON roles.partner_id = partners.id) temp
ORDER BY partners.name, roles.name
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.