所以,你必须与此类似表设置:类似这样的
create table scores(
Player varchar(20) not null,
score1 int not null,
score2 int not null
);
您的信息:
insert into scores(player, score1, score2) values('player 1', 0, 0);
insert into scores(player, score1, score2) values('player 1', 10, 20);
insert into scores(player, score1, score2) values('player 1', 20, 30);
,并在运行类似于此条件的查询:
SELECT Player,
Avg(Case When Score1> 0 then Score1 end) AS AverageScore1,
Avg(Case When Score2> 0 then Score2 end) AS AverageScore2
FROM scores
where Score1<10 and Score2<10
GROUP BY Player
你得到这样的输出:
Player AverageScore1 AverageScore2
--------- --------------- -----------------
Player1 NULL NULL
但你想要的是:
Player AverageScore1 AverageScore2
--------- --------------- -----------------
是吗?
如果是这样,加入了 “具有” 条款将过滤掉空值记录:
SELECT Player,
Avg(Case When Score1> 0 then Score1 end) AS AverageScore1,
Avg(Case When Score2> 0 then Score2 end) AS AverageScore2
FROM scores
where Score1<10 and Score2<10
GROUP BY Player
having Avg(Case When Score1> 0 then Score1 end) is not null and
Avg(Case When Score2> 0 then Score2 end) is not null
'HAVING AVG(案例当Score1> 0,则Score1结束)不NULL'? –
你能否给出一个会导致不包含分数的标准示例? –
@Samcd例如虽然愚蠢的一个WHERE Player ='xxx',并且没有播放器叫做xxx – RGriffiths