私の理解が正しければ、品種がすべて白またはすべて黒の品種は必要ありません。白と黒の品種のみが必要です (コッカースパニエルのさまざまな色)。それに基づいて、これが私が思いついたものです(おそらく最も効率的ではありませんが)。
DECLARE @pets TABLE(
id INTEGER NOT NULL,
name VARCHAR(20) NOT NULL,
breed VARCHAR(20) NOT NULL,
color VARCHAR(20) NOT NULL,
weight INTEGER NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO @pets VALUES (1, 'jeff', 'breed1', 'black', 20)
INSERT INTO @pets VALUES (2, 'larry', 'breed1', 'white', 20)
INSERT INTO @pets VALUES (3, 'bob', 'breed2', 'black', 30)
INSERT INTO @pets VALUES (4, 'kevin', 'breed3', 'black', 30)
INSERT INTO @pets VALUES (5, 'jerry', 'breed3', 'white', 30)
DECLARE @breed VARCHAR(50)
SET @breed = 'breed1'
;WITH cte (color) AS (SELECT DISTINCT color FROM @pets WHERE breed = @breed)
SELECT breed, COUNT(id) FROM @pets WHERE color IN (SELECT color FROM cte)
AND breed != @breed
GROUP BY breed
HAVING COUNT(id) >= (SELECT COUNT(*) FROM cte)
Result: breed3
CTE をサポートしていないバージョンの SQL を使用している場合は、一時テーブルまたはテーブル変数を使用して、他の品種で探す必要がある色を保持できます。うまくいけば、それは役に立ちます!