EDIT: I work with Citigroup as a consultant on their internal legal applications (including the immigration tracking database). I did a quick search and I can promise, without revealing what is in the database, that the inflated numbers for the Citigroup positions are obvious typos.
We track base wage, prevailing wage, and upto wage. So (as a completely made-up example) if I see a position with a base wage of 95k, prevailing wage of 100k and upto wage of 1.15M, it's pretty obvious that someone just entered an extra zero.
In short, there are no Sr. Programmer Analysts here making $1M/year or even $400k/year. Nothing to see here.
CITIGROUP GLOBAL MARKETS INC. APPLICATIONS DEVELOPMENT SENIOR PROGRAMMER ANALYST $457K
What do you have to know to be worth this much to a bank?