다음과 같은 답변 표가 있습니다.
ID ItemID Answer
1 1 yes
2 1 no
3 1 yes
4 1 yes
5 2 no
6 2 yes
7 3 yes
나는 배열을 제공하고 배열의 각각 에 대해 ItemId
계산할 수 있기를 원합니다 .number of yes answers - number of no answers
ItemID
다음과 같이 개별 항목에 대해이 작업을 수행 할 수 있습니다.
SELECT (SELECT count(ID) FROM table WHERE ItemID= <id> AND Answer = 'Yes') - (SELECT count(ID) FROM table WHERE ItemID= <id> AND Answer = 'No') AS difference
하지만 하나의 쿼리에서 여러 ID에 대해 작동하도록 어떻게 조정할 수 있습니까?
입력 [1,2]
이 다음과 같이 보일 때 예상되는 출력
ItemID Difference
1 2
2 0
조건부 집계를 사용하십시오.
select itemid,
count(*) filter (where answer = 'yes') as num_yes,
count(*) filter (where answer = 'no') as num_no
from t
group by itemid;
where itemid in (1, 2)
특정 항목으로 제한하려는 경우 포함 (또는 유사한 항목) 할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다