적절한 타일을 구성 할 수없는 쿼리가 아래에 있습니다. 그러나 여기에 내 문제가 있습니다.
prv pat id flg
001 a SIU
002 b OVR
003 c NULL
004 a NULL
004 c NULL
001 e SIU
005 c SIU
005 f SIU
예상 출력
prv percentage
004 100%
003 100%
002 0%
여기 논리는 004 prv에 2 개의 patid가 있습니다.
004 a NULL
004 c NULL
그러나 004의 patid "a"는 flg가 SIU 인 001 "a"에 속하고 004의 "c"는 flag가 SIU 인 005 "c"에 속합니다. 따라서 백분율은 100 % 여야합니다. 004의 두 patid가 다른 행의 SIU이기 때문입니다.
유사하게 003의 경우 1 개의 행이 있습니다.
003 c NULL
여기서 백분율은 100 %입니다. 003 patid의 "c"가 SIU 플래그가있는 005에 속하므로 003의 경우 100 %
그들은 이미 SIU와 함께 patid를 가지고 있기 때문에 001과 005를 계산하지 않을 것입니다.
sqlfiddle 링크 http://www.sqlfiddle.com/#!9/fbd32/6/0
따라서 최종 쿼리는 다음과 같아야합니다 (작동, 테스트).
SELECT
main.prv,
CONCAT(ROUND(SUM(pat_is_siu)/COUNT(*) * 100),'%') AS percentage
FROM (
SELECT
a.*,
IFNULL((SELECT 1 FROM a AS b WHERE b.`flg` = "SIU" AND b.`pat` = a.`pat` LIMIT 1),0) AS pat_is_siu
FROM a
WHERE IFNULL(a.`flg`, "") != "SIU"
) main
GROUP BY main.`prv`
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다