[英]How can I get calculated value with different two column on PostgreSQL + Rails?
[英]Postgresql: How can I get 1 value from 3 different queries
早上好! 让我从头开始。 这是我的查询:
--Query 1:
select proceeding_id,operator_id,format_code,count (format_code) as E1
from legacy_formats where format_code in ('1.1.2') group by 1,2,3
UNION
--Query 2
select proceeding_id,operator_id,format_code,count (format_code) as E2
from legacy_formats where format_code in ('1.1.3') group by 1,2,3
UNION
--Query 3
select proceeding_id,operator_id,format_code,count (format_code) as E3
from legacy_formats where format_code in ('1.1.4') group by 1,2,3
这3个查询给了我4列结果:
E1 =第一个结果。 E =第二个结果。 E3 =第三结果。 我需要获取以下信息:
E1 / ( E1 + E2 + E3)
因此,我需要在查询末尾添加另一个查询以获得此结果。
提前致谢
这是你想要的?
create table tt (
identifier varchar(20),
e integer
);
insert into tt values ('E1',5);
insert into tt values ('E2',6);
insert into tt values ('E3',3);
select (
(select e from tt where identifier='E1')::float
/
(select sum(e) from tt where identifier in ('E1','E2','E3'))
) as ratio;
ratio
-----
0.35714285714285715
对于您的问题的很多方面,我还是不太清楚,但是假设myqueryresults
是您查询的结果,也许这样的事情就可以了。 我还假设一致的dato id
以某种方式与该数据的分组方式相关。
如果我的任何假设是错误的,请随时澄清。
with myqueryresults as (
<whatever you did to get that output>
)
select
format_code, indentificator, e, e / sum (e) over (partition by dato_id)
from myqueryresults
在上面的示例输出中,这将为您提供:
1.1.2 E1 5 0.35714285714285714286
1.1.3 E2 6 0.42857142857142857143
1.1.4 E3 3 0.21428571428571428571
希望您能得到答案,也可以尝试一下
SELECT (SUM(CASE WHEN identificador = 'E1' THEN e END)::numeric(5,2)/
SUM(CASE WHEN identificador IN ('E1','E2','E3') THEN e END))::numeric(5,4) result
FROM resultQuery
它给你想要的结果
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.