Return rows that meet a condition in two different columns I have the following table describing the color and smell of an animal. I am trying to filter it to see what animals are the same color and smell. I do not care if multiple animals use the same color or use the same smell, but if they use the same color AND smell, that is what I want to see. 

I have tried using union and also and select statement with in after a where. I think I understand how to compare multiple columns if they are in different tables, but I can't seem to do it if the columns are in the same table. 

Table: Animals

Name| color| smell
-------------------------
cat | red  | bad
dog | red  | bad 
rat | red  | good
bat | red  | decent
bee | red  | okay
ape | red  | okay
ant | red  | bad


I want to be able to return the following:

Name| color| smell
-------------------------
cat | red  | bad
dog | red  | bad 
ant | red  | bad
bee | red  | okay
ape | red  | okay


Thanks for the help.
WITH cte AS ( SELECT *, COUNT(*) OVER (PARTITION BY color, smell)  cnt
              FROM animals )
SELECT name, color, smell
FROM cte
WHERE cnt &gt; 1


PS. color and smell must be NOT NULL.