The following query does that for you.
I've first created a Common Table Expression and named it
Gold to give me a set with all the users that have a Gold Badge (The Class = 1 depicts that).
Then I select from the users table and do a LEFT OUTER JOIN with
Gold, joining on the userid. The Users that don't have a Gold badge will not have a corresponding row in Gold. That is the criteria we can use to filter the result set on, where Gold.id is null will select those rows that don't have a matching row in the Gold set.
;with gold as
where class = 1 -- Gold
select users.id as [User Link]
left outer join gold on gold.userid = users.id
where gold.id is null
order by reputation desc
When run today this is the result:
Keep in mind SEDE is updated once a week on Sunday.
Use the awesome SEDE Tutorial written by the magnificent Monica Cellio.
Say "Hi" in SEDE chat.