我在下面的查询中,我无法框出适当的图块。
但是,这是我的问题。

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的模式“ a”属于flg是SIU的001“ a”,而004的“ c”属于标志是SIU的005“ c”。
因此百分比应为100%,因为其他行中004的两个部分均为SIU。

类似地,对于003,有1行

003    c        NULL


此处的百分比为100%,因为003 patid的“ c”属于具有SIU标志的005,所以对于003,其100%

我们不会计算001和005,因为它们已经与SIU取得联系。

链接到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`

09-18 15:38