SO に関する質問の 1 つに、次のクエリで回答しました。
SELECT s.address
FROM shop s
JOIN visit v ON s.shopid = v.shopid
JOIN customer c ON v.customerid = c.customerid
WHERE c.cname = 'John'
GROUP BY
s.address
, c.customerid
HAVING COUNT(*) > 1
これは問題なく動作しますが、クエリの基準を満たす特定のショップの John's が 2 つ以上ある場合は重複した住所が返されるため、回答を変更しました。
SELECT DISTINCT a.address
FROM
(
SELECT s.address
FROM shop s
JOIN visit v ON s.shopid = v.shopid
JOIN customer c ON v.customerid = c.customerid
WHERE c.cname = 'John'
GROUP BY
s.address
, c.customerid
HAVING COUNT(*) > 1
) a
ここで私の質問は、最初に集計式を評価し、次に単一のクエリで選択する前にグループ化を達成することは可能ですか?