我不知道怎么说这个,请允许我解释一下。从这张桌子
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
我认为你需要计算每个图层的不同镜头数和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及其结果: