これが1つの解決策です。まず、派生テーブル内の個別の行にセットを減らしてから、その結果にGROUPBYを適用します。
SELECT SUM(case when d.status = 2 then d.value end) as 'val_accepted'
FROM (
SELECT DISTINCT p.id, p.status, p.value, pc.library_id
FROM props p
INNER JOIN p_contents AS pc ON p.id = pc.prop_id
INNER JOIN contents AS c ON c.id = pc.library_id
WHERE p.account_id = 3) AS d
GROUP BY d.library_id
DISTINCT(pc.library_id)
を使用します あなたの例では、DISTINCTが括弧内の列にのみ適用されるかのように。これはよくある誤解です。 DISTINCTは、選択リストのすべての列に適用されます。 DISTINCTは関数ではありません。これはクエリ修飾子です。