我不知道怎么说这个,请允许我解释一下。从这张表
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有两次投篮,平均每次投篮1.5次。
id | average layer
____________________
1 | 2
2 | 1.5
答案 0 :(得分: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及其结果: