根据另外两列计算它们并对它们进行平均

问题描述 投票:0回答:1

我不知道怎么说这个,请允许我解释一下。从这张桌子

CREATE TABLE test (
    id int4 NULL,
    shot varchar NULL,
    layer varchar NULL
);

INSERT INTO test (id,shot,layer) VALUES 
(1,'10','a')
,(1,'10','a')
,(1,'10','b')
,(1,'10','c')
,(1,'20','a')
,(2,'10','a')
,(2,'10','a')
,(2,'10','a')
,(2,'10','a')
,(2,'10','b')
,(2,'10','b')
,(2,'20','a');

如何查询每个镜头的平均图层并按ID显示?

例如,id 1有2个镜头,一个有3层,另一个有1层,所以平均每个镜头是2层。

Id 2有2次射击,平均每次射击1.5次。

id  |  average layer
____________________
1   |  2
2   |  1.5
postgresql
1个回答
1
投票

我认为你需要计算每个图层的不同镜头数和id(如果我已经正确理解你)在子查询中然后平均

select id, avg(layers_per_shot) as average
from (
  select id, shot, count( distinct layer) as layers_per_shot
  from test
  group by id, shot ) Q
group by id

Working fiddle及其结果:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.