我有一个如下表:
emp PR PF
--- --- ---
1 10 20
2 30 20
3 10 20
4 5 6
我正在尝试对值进行计数,以使如果PF
或PR
或两者与emp 1相同,则计数应增加。
例如,emp 2
的PF与emp 1
相同,因此,对于emp 2,count应该为1。
对于给定的表格示例,我正在尝试获得如下输出:
emp countVal
--- --------
2 1
3 2
我已经使用自我联接编写了以下查询,但未提供所需的输出。
SELECT e.emp,sum(CASE When e1.PR=e2.PR Then 1
When e1.PF=e2.PF Then 1
Else 0 End ) as countVal
FROM
employee e1
INNER JOIN employee e2
ON e1.emp=e2.emp and e1.emp!=1
group by e1.emp
有人可以告诉我我该怎么做吗?
答案 0 :(得分:0)
我想你想要
SELECT e.emp,
( (e.PR = e1.PR)::int + (e.PF = e1.PF)::int ) as countVal
FROM employee e JOIN
employee e1
ON e1.emp = 1;
注意:
::
将Postgres的类型从布尔值转换为整数。答案 1 :(得分:0)
好吧,输出结果不会像那样,因为您需要在所有经验值之间进行组合。无法猜测您需要哪些:
select *,
CAST((t1.PR = t2.PR) as int) + cast(t1.PF = t2.PF) as int) as countValue from empTable t1
cross join empTable t2
祝你好运!