Does `COUNT` discard duplicates?
Either your professor made a mistake or you misunderstood what she said. In the context of relational DBMSes, as implemented by various vendors, the aggregate function COUNT(&lt;expression&gt;) returns the number of non-NULL values of &lt;expression&gt; in the result set (or a group). 

There is a special case of COUNT(*), which returns the number of rows in the result set or group, not the number of values of anything. This is equivalent to COUNT(&lt;constant expression&gt;), such as COUNT(1).

Many databases support COUNT(DISTINCT &lt;expression&gt;), which will return the number of unique values of &lt;expression&gt;.