あなたが望む論理は何ですか?
3人以上の子供を持つメキシコ人、2人のアメリカ人、1人の日本人が必要だと思います。この場合、次のようになります。
having (case when count(nationality = 'Mexican' then children end) > 3 then 'true'
when count(nationality = 'American' then children end) = 2 then 'true'
when count(nationality = 'Japanese' then children end) = 1 then 'true'
end) = 'true'
しかし、これでも奇妙に思えます。なぜ「子供」を数えているのですか。何をグループ化していますか?子がデータの単なるフィールドである場合、これはHAVING句ではなくWHERE句である必要があります。
where (nationality = 'Mexican' and children end > 3) or
(nationality = 'American' and children = 2) or
(nationality = 'Japanese' and children = 1)