Good morning skvd2006, Welcome to Android Forums.
Contacts come from several places on an Android phone. Obviously the Gmail account that it's registered to, which will include the most information per contact, is the prime location. You can also have contacts stored only on the phone (private, and not sync'ed to gmail) or from an account like Facebook, Yahoo or MSN.
The problem comes with sim contacts.
Because sim contacts are not actually part of the Android OS but extraneous data, they can't be joined or connected to the other accounts to homogenize your contact list. I am afraid if you require contacts be saved on your sim and gmail, you will always have duplicates.