簡體   English   中英

PSQL:sum不適用於字段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM