我面对非常困难的pb,我找不到实现这个目标的方法,我想要计算出有多少次出现等于member1(id1)的出现,如你所见, id2有4个相等的id1,而id3只有1个偶然的出现:
我的表测试是:
id classement aptitude A B C
1 2440 oui 2 9 1
2 2440 oui 2 9 5
3 1760 oui 1 8 5
4 2440 oui 2 9 1
在这个例子中,结果应该是:
id count
4 5
2 4
3 1
什么样的查询可以实现它,是否可能?!
答案 0 :(得分:2)
尝试:
select T2.id,
coalesce((T1.classement=T2.classement),0)+
coalesce((T1.aptitude=T2.aptitude),0)+
coalesce((T1.A=T2.A),0)+
coalesce((T1.B=T2.B),0)+
coalesce((T1.C=T2.C),0) match_count
from Temp T1
cross join Temp T2
where T1.id = 1 and T2.id <> 1
order by 2 desc
SQLFiddle here。
答案 1 :(得分:-1)
这可能有效:
select a.id,
length((case when a.aptitude = b.aptitude then '1' else '' end) ||
(case when a.classement = b.classement then '1' else '' end) ||
(case when a.A = b.A then '1' else '' end) ||
(case when a.B = b.B then '1' else '' end) ||
(case when a.C = b.C then '1' else '' end)) count
from test a,
(select *
from test
where id = 1) b
where a.id != 1