There's a lot of silly types of queries here. I tried to include some basic examples and then some outlandish ones to give you an idea of how much we can find before getting too complicated.
Table of contents
Baby name data
Sorting and filtering
10 most popular names overall
SELECT *
FROM babynames
ORDER BY babies DESC
LIMIT 10;
name |
sex |
babies |
Michael |
M |
65274 |
Christopher |
M |
52323 |
Jessica |
F |
46466 |
Ashley |
F |
45549 |
Matthew |
M |
44794 |
Joshua |
M |
43214 |
Brittany |
F |
36535 |
Amanda |
F |
34406 |
Daniel |
M |
33809 |
David |
M |
33741 |
5 most popular boy names
SELECT *
FROM babynames
WHERE sex = 'M'
ORDER BY babies DESC
LIMIT 5;
name |
sex |
babies |
Michael |
M |
65274 |
Christopher |
M |
52323 |
Matthew |
M |
44794 |
Joshua |
M |
43214 |
Daniel |
M |
33809 |
5 most popular names that begin with 'Mich'
SELECT *
FROM babynames
WHERE name LIKE 'Mich%'
ORDER BY babies DESC
LIMIT 5;
name |
sex |
babies |
Michael |
M |
65274 |
Michelle |
F |
13417 |
Micheal |
M |
1771 |
Michele |
F |
1164 |
Michaela |
F |
878 |
5 most popular names with exactly 6 characters that begin with the letters "Ja"
SELECT *
FROM babynames
WHERE name LIKE 'Ja____'
ORDER BY babies DESC
LIMIT 5;
Alternatively, this would also work:
SELECT *
FROM babynames
WHERE name LIKE 'Ja%'
AND LENGTH(name) = 6
ORDER BY babies DESC
LIMIT 5;
name |
sex |
babies |
Jaclyn |
F |
2155 |
Javier |
M |
1977 |
Jasmin |
F |
1218 |
Jazmin |
F |
910 |
Jarrod |
M |
792 |
5 most popular girl names with 4 or fewer characters
SELECT *
FROM babynames
WHERE
sex = 'F'
AND LENGTH(name) <= 4
ORDER BY babies DESC
LIMIT 5;
name |
sex |
babies |
Sara |
F |
8972 |
Mary |
F |
8664 |
Amy |
F |
8456 |
Erin |
F |
7985 |
Anna |
F |
7288 |
3 most popular names that begin with 'Z'
SELECT *
FROM babynames
WHERE
name LIKE 'Z%'
ORDER BY babies DESC
LIMIT 3;
name |
sex |
babies |
Zachary |
M |
20424 |
Zachery |
M |
1228 |
Zachariah |
M |
757 |
3 most popular names with at least 2 consecutive "r" letters
SELECT *
FROM babynames
WHERE name LIKE '%rr%'
ORDER BY babies DESC
LIMIT 3;
name |
sex |
babies |
Garrett |
M |
3755 |
Derrick |
M |
3363 |
Larry |
M |
2193 |
5 most popular girl names that end in a vowel
SELECT *
FROM babynames
WHERE
sex = 'F'
AND SUBSTR(name, -1) IN ('a', 'e', 'i', 'o', 'u')
ORDER BY babies DESC
LIMIT 5;
name |
sex |
babies |
Jessica |
F |
46466 |
Amanda |
F |
34406 |
Samantha |
F |
25864 |
Stephanie |
F |
24856 |
Nicole |
F |
17950 |
5 most popular girl names that don't end in a vowel
SELECT *
FROM babynames
WHERE
sex = 'F'
AND SUBSTR(name, -1) NOT IN ('a', 'e', 'i', 'o', 'u')
ORDER BY babies DESC
LIMIT 5;
name |
sex |
babies |
Ashley |
F |
45549 |
Brittany |
F |
36535 |
Sarah |
F |
25808 |
Jennifer |
F |
22221 |
Elizabeth |
F |
20742 |
5 most popular boy names that begin and end in vowels
SELECT *
FROM babynames
WHERE
sex = 'M'
AND SUBSTR(name, 1, 1) IN ('A', 'E', 'I', 'O', 'U')
AND SUBSTR(name, -1) IN ('a', 'e', 'i', 'o', 'u')
ORDER BY babies DESC
LIMIT 5;
name |
sex |
babies |
Antonio |
M |
4864 |
Alejandro |
M |
2636 |
Andre |
M |
2296 |
Eduardo |
M |
2159 |
Alberto |
M |
1353 |
The 5 longest names, sorted by popularity
SELECT name, LENGTH(name) AS namelength,
sex, babies
FROM babynames
ORDER BY
namelength DESC,
babies DESC
LIMIT 5;
name |
namelength |
sex |
babies |
Franciscojavier |
15 |
M |
5 |
Michaelanthony |
14 |
M |
19 |
Mariadelcarmen |
14 |
F |
16 |
Mariaguadalupe |
14 |
F |
16 |
Sarahelizabeth |
14 |
F |
10 |
5 longest names with at least 1,000 babies
SELECT name,
LENGTH(name) AS namelength,
sex,
babies
FROM babynames
WHERE babies >= 1000
ORDER BY namelength DESC;
name |
namelength |
sex |
babies |
Christopher |
11 |
M |
52323 |
Jacqueline |
10 |
F |
5238 |
Alexandria |
10 |
F |
3594 |
Kristopher |
10 |
M |
1858 |
Stephanie |
9 |
F |
24856 |
Aggregates
Number of rows in the babynames
table
SELECT COUNT(*)
FROM babynames;
Number of total babies in the babynames
table
SELECT SUM(babies)
FROM babynames;
Number of unique names
SELECT COUNT(DISTINCT name)
FROM babynames;
COUNT(DISTINCT name) |
22674 |
Number of names with more than 10,000 babies
SELECT COUNT(*)
FROM babynames
WHERE babies > 10000;
Total number of girl names and babies
SELECT
COUNT(*) AS total_names,
SUM(babies) AS total_babies
FROM babynames
WHERE sex = 'F';
total_names |
total_babies |
15231 |
1897709 |
Total number of names and babies, boys versus girls
SELECT sex,
COUNT(*) AS total_names,
SUM(babies) AS total_babies
FROM babynames
GROUP BY sex;
sex |
total_names |
total_babies |
F |
15231 |
1897709 |
M |
9482 |
2052543 |
Average length of all names, unweighted
SELECT AVG(LENGTH(name))
FROM babynames;
AVG(LENGTH(name)) |
6.33828349451706 |
Weighted average length of all names
SELECT
1.0 * SUM(LENGTH(name) * babies) / SUM(babies)
FROM babynames;
1.0 * SUM(LENGTH(name) * babies) / SUM(babies) |
6.19453898131056 |
Average length (unweighted) of names, boys versus girls, rounded to 2 decimal places
SELECT sex,
ROUND(AVG(LENGTH(name)), 2)
FROM babynames
GROUP BY sex;
sex |
ROUND(AVG(LENGTH(name)), 2) |
F |
6.47 |
M |
6.13 |
5 most popular starting letters for girl names
SELECT
SUBSTR(name, 1, 1) AS first_letter,
SUM(babies) AS total_babies
FROM babynames
WHERE
sex = 'F'
GROUP BY first_letter
ORDER BY total_babies DESC
LIMIT 5;
first_letter |
total_babies |
A |
275925 |
K |
201700 |
J |
177754 |
S |
177028 |
C |
171470 |
5 most popular combinations of first and last letters for boy names
SELECT
SUBSTR(name, 1, 1) AS first_letter,
SUBSTR(name, -1) AS last_letter,
SUM(babies) AS total_babies
FROM babynames
WHERE
sex = 'F'
GROUP BY first_letter, last_letter
ORDER BY total_babies DESC
LIMIT 5;
first_letter |
last_letter |
total_babies |
J |
n |
137274 |
M |
l |
83196 |
B |
n |
71835 |
C |
r |
58305 |
S |
n |
56663 |
Top 10 starting letter of names, sorted by longest (unweighted) average length of name
SELECT
SUBSTR(name, 1, 1) AS first_letter,
AVG(LENGTH(name)) AS avg_namelength
FROM babynames
GROUP BY first_letter
ORDER BY avg_namelength DESC
LIMIT 10;
first_letter |
avg_namelength |
Q |
7.32258064516129 |
C |
6.7832719621252 |
S |
6.72365038560411 |
M |
6.62336956521739 |
F |
6.50609756097561 |
B |
6.49479166666667 |
V |
6.47902097902098 |
G |
6.44465648854962 |
J |
6.39849269901083 |
D |
6.37574123989218 |
And bottom 5 starting letters, based on average name length
Just because I'm curious…
SELECT
SUBSTR(name, 1, 1) AS first_letter,
AVG(LENGTH(name)) AS avg_namelength
FROM babynames
GROUP BY first_letter
ORDER BY avg_namelength ASC
LIMIT 5;
first_letter |
avg_namelength |
I |
5.37113402061856 |
U |
5.54166666666667 |
X |
5.59459459459459 |
O |
5.6865671641791 |
Z |
5.75925925925926 |
Number of babies and names for names that end in a vowel, boys versus girls
SELECT
sex,
COUNT(*) AS total_names,
SUM(babies) AS total_babies
FROM babynames
WHERE
SUBSTR(name, -1) IN ('a', 'e', 'i', 'o', 'u')
GROUP BY sex;
sex |
total_names |
total_babies |
F |
10860 |
1106357 |
M |
2595 |
277115 |
For each vowel, total number of names (and babies named) that begin with a vowel, broken down by boys versus girls
SELECT
LOWER(SUBSTR(name, 1, 1)) AS first_letter,
sex,
COUNT(*) AS total_names,
SUM(babies) AS total_babies
FROM babynames
WHERE
first_letter IN ('a', 'e', 'i', 'o', 'u')
GROUP BY first_letter, sex;
first_letter |
sex |
total_names |
total_babies |
a |
F |
1458 |
275925 |
a |
M |
754 |
180177 |
e |
F |
422 |
89356 |
e |
M |
339 |
71102 |
i |
F |
175 |
9492 |
i |
M |
116 |
16722 |
o |
F |
74 |
6133 |
o |
M |
127 |
8928 |
u |
F |
17 |
484 |
u |
M |
31 |
1174 |
Florida university salaries
Sorting and filtering
Top 5 salaries overall
Remember we have to use a WHERE
clause to filter out blank values:
SELECT *
FROM florida_positions
WHERE AnnualSalary != ''
ORDER BY AnnualSalary DESC
LIMIT 5;
You might be thinking, why can't we use the money_amount
we column created in a previous lesson?
SELECT *
FROM florida_positions
ORDER BY money_amount DESC
LIMIT 5;
Because that money_amount
could contain either AnnualSalary
or OPSTermAmount
. We just want salaried workers for this query.
University |
BudgetEntity |
PositionNumber |
LastName |
FirstName |
MI |
EmployeeType |
FTE |
ClassCode |
ClassTitle |
AnnualSalary |
OPSTermAmount |
money_amount |
UF |
Contracts & Grants |
00000000 |
FRIEDMAN |
WILLIAM |
A |
SALARIED |
0.97 |
9001 |
PROFESSOR |
961281 |
|
961281 |
UF |
Contracts & Grants |
00000805 |
GUZICK |
DAVID |
S |
SALARIED |
1.0 |
9001 |
PROFESSOR |
905000 |
|
905000 |
UF |
Contracts & Grants |
00000000 |
KESHAVARZI |
SASSAN |
. |
SALARIED |
0.97 |
9003 |
ASSISTANT PROFESSOR |
730685 |
|
730685 |
UF |
Contracts & Grants |
00000000 |
CHALAM |
KAKARLA |
V |
SALARIED |
0.96 |
9001 |
PROFESSOR |
680685 |
|
680685 |
UF |
Contracts & Grants |
00005361 |
FUCHS |
WESLEY |
K |
SALARIED |
0.77 |
9001 |
PROFESSOR |
661340 |
|
661340 |
Top 5 salaries that don't involve Contracts & Grants
According to this 2011 Orlando Sentinel article, "Here's what Florida professors earn", much of these high professor salaries come from grants, which seems like something we can filter out in the BudgetEntity
column:
SELECT *
FROM florida_positions
WHERE
AnnualSalary != ''
AND BudgetEntity != "Contracts & Grants"
ORDER BY AnnualSalary DESC
LIMIT 5;
University |
BudgetEntity |
PositionNumber |
LastName |
FirstName |
MI |
EmployeeType |
FTE |
ClassCode |
ClassTitle |
AnnualSalary |
OPSTermAmount |
money_amount |
UF |
Educational & General |
00016824 |
BASS |
THEODORE |
A |
SALARIED |
1.0 |
9001 |
PROFESSOR |
633368 |
|
633368 |
UF |
Educational & General |
00021041 |
MCCOOK |
BARRY |
M |
SALARIED |
1.0 |
9002 |
ASSOCIATE PROFESSOR |
575035 |
|
575035 |
FIU |
Intercollegiate Athletics |
62515000 |
TURNER |
RONALD |
D |
SALARIED |
1.0 |
9469 |
HEAD ATHLETIC COACH |
546000 |
|
546000 |
UCF |
Educational & General |
39123 |
GERMAN |
DEBORAH |
D |
SALARIED |
1.0 |
9001 |
PROFESSOR |
541402 |
|
541402 |
FIU |
Educational & General |
34205000 |
ROCK |
JOHN |
A |
SALARIED |
1.0 |
9001 |
PROFESSOR |
539537 |
|
539537 |
Top 5 salaries for non-professors
Note that I'm not using *
to select all columns, just to limit the visual clutter:
SELECT University, BudgetEntity,
FirstName, LastName, ClassTitle,
AnnualSalary
FROM florida_positions
WHERE
AnnualSalary != ''
AND ClassTitle NOT LIKE '%PROFESSOR%'
ORDER BY AnnualSalary DESC
LIMIT 5;
University |
BudgetEntity |
FirstName |
LastName |
ClassTitle |
AnnualSalary |
FIU |
Intercollegiate Athletics |
RONALD |
TURNER |
HEAD ATHLETIC COACH |
546000 |
USF |
Educational & General |
JOEL |
MOMBERG |
V P ADVANCEMENT/ALUMNI AFF. |
532250 |
FIU |
Educational & General |
MODESTO |
MAIDIQUE |
EMINENT SCHOLAR |
514211 |
FAU |
|
CHARLES |
PARTRIDGE |
HEAD ATHLETIC COACH |
500000 |
USF |
Intercollegiate Athletics |
ROBERT |
HARLAN |
ATHLETICS DIRECTOR |
500000 |
Top 5 salaries for coaches
We can assume that these employees will have 'COACH'
in their title somewhere:
SELECT University, BudgetEntity,
FirstName, LastName, ClassTitle,
AnnualSalary
FROM florida_positions
WHERE
AnnualSalary != ''
AND ClassTitle LIKE '%COACH%'
ORDER BY AnnualSalary DESC
LIMIT 5;
University |
BudgetEntity |
FirstName |
LastName |
ClassTitle |
AnnualSalary |
FIU |
Intercollegiate Athletics |
RONALD |
TURNER |
HEAD ATHLETIC COACH |
546000 |
FAU |
|
CHARLES |
PARTRIDGE |
HEAD ATHLETIC COACH |
500000 |
USF |
Intercollegiate Athletics |
WILLIE |
TAGGART |
HEAD FOOTBALL COACH |
400000 |
FSU |
Intercollegiate Athletics |
MICHAEL |
MARTIN |
HEAD ATHL COACH II |
391109 |
USF |
Intercollegiate Athletics |
ORLANDO |
ANTIGUA |
HEAD BASKETBALL COACH |
375000 |
Same as above, but replace '%COACH%'
with '%FOOTBALL%'
:
SELECT University, BudgetEntity,
FirstName, LastName, ClassTitle,
AnnualSalary
FROM florida_positions
WHERE
AnnualSalary != ''
AND ClassTitle LIKE '%FOOTBALL%'
ORDER BY AnnualSalary DESC
LIMIT 5;
University |
BudgetEntity |
FirstName |
LastName |
ClassTitle |
AnnualSalary |
USF |
Intercollegiate Athletics |
WILLIE |
TAGGART |
HEAD FOOTBALL COACH |
400000 |
USF |
Intercollegiate Athletics |
THOMAS |
ALLEN |
ASST. HEAD FOOTBALL COACH |
350000 |
I'm pretty sure there are more than 2 football coaches in Florida's public university system…Looks like job titles aren't consistent across schools.
Find the provosts at each school and rank them by salary
SELECT University, ClassTitle,
FirstName, LastName, AnnualSalary
FROM florida_positions
WHERE ClassTitle LIKE '%PROVOST%'
ORDER BY AnnualSalary DESC;
Hmmm…that didn't work out. Some schools are missing.
University |
ClassTitle |
FirstName |
LastName |
AnnualSalary |
UF |
VICE PRESIDENT & ASO PROVOST |
ZINA |
EVANS |
197874 |
FGCU |
PROVOST & VP ACADEMIC AFFAIRS |
RONALD |
TOLL |
186221 |
NCF |
PROVOST/ASSOC. PROFESSOR |
STEPHEN |
MILES |
166000 |
FAU |
ASSISTANT PROVOST |
JEFFERY |
HOYT |
145000 |
FPU |
ASSISTANT PROVOST - ADMISSONS |
SCOTT |
RHODES |
140000 |
FGCU |
PROVOST & VP ACADEMIC AFFAIRS |
RONALD |
TOLL |
129408 |
FAU |
ASSISTANT PROVOST |
TRACY |
BOULUKOS |
125000 |
FAU |
ASSISTANT PROVOST |
JAMES |
CAPP |
61500 |
UF |
VICE PRESIDENT & ASO PROVOST |
ZINA |
EVANS |
34919 |
For example, Ralph Wilcox is the Provost for University of South Florida, but he doesn't show up in the list above. Let's look for him individually:
SELECT *
FROM florida_positions
WHERE University = 'USF'
AND FirstName = 'RALPH'
AND LastName = 'WILCOX';
Looks like he's just listed as a PROFESSOR
, just one of his hats:
University |
BudgetEntity |
PositionNumber |
LastName |
FirstName |
MI |
EmployeeType |
FTE |
ClassCode |
ClassTitle |
AnnualSalary |
OPSTermAmount |
money_amount |
USF |
Educational & General |
00008847 |
WILCOX |
RALPH |
C |
SALARIED |
1.0 |
9001 |
PROFESSOR |
375000 |
|
375000 |
List all job titles that contain Professor in them
Is the data such that PROFESSOR
is abbreviated as PROF
? Only one way to find out:
SELECT DISTINCT ClassTitle
FROM florida_positions
WHERE ClassTitle LIKE '%PROF%';
ClassTitle |
PROFESSOR |
ASSOCIATE PROFESSOR |
ASSISTANT PROFESSOR |
UNIVERSITY SCHOOL ASSISTANT PROFESSOR |
DISTINGUISHED PROFESSOR |
ACADEMIC PARAPROFESSIONAL |
ADMINISTRATIVE PARAPROFESSIONA |
COMPUTING PARAPROFESSIONAL |
OPERATIONAL PARAPROFESSIONAL |
UNIVERSITY SCHOOL ASSOCIATE PROFESSOR |
TECHNICAL PARAPROFESSIONAL |
UNIVERSITY SCHOOL PROFESSOR |
GRADUATE RESEARCH PROFESSOR |
MEDICAL PARAPROFESSIONAL |
VISITING ASSISTANT PROFESSOR |
ASSIST PROF & DIR OF ECONOMICS ANALYSIS |
VISITING ASSOCIATE PROFESSOR |
ASSOCIATE VP FOR ACAD AFFAIRS & PROF |
PROFESSIONAL ENGINEER |
PROVOST/ASSOC. PROFESSOR |
DEAN/ASSOCIATE PROFESSOR |
DIRECTOR PROFESSIONAL DEVELOP |
ASSOC PROFESSOR |
Looks like doing a wildcard with 'PROF'
brings up job titles with PROFESSIONAL
in them, which is not what we want.
SELECT DISTINCT ClassTitle
FROM florida_positions
WHERE ClassTitle LIKE '%PROFESSOR%';
ClassTitle |
PROFESSOR |
ASSOCIATE PROFESSOR |
ASSISTANT PROFESSOR |
UNIVERSITY SCHOOL ASSISTANT PROFESSOR |
DISTINGUISHED PROFESSOR |
UNIVERSITY SCHOOL ASSOCIATE PROFESSOR |
UNIVERSITY SCHOOL PROFESSOR |
GRADUATE RESEARCH PROFESSOR |
VISITING ASSISTANT PROFESSOR |
VISITING ASSOCIATE PROFESSOR |
PROVOST/ASSOC. PROFESSOR |
DEAN/ASSOCIATE PROFESSOR |
ASSOC PROFESSOR |
Aggregates
Sum the total salaries and payments for Florida's public universities
SELECT SUM(money_amount) AS total_money
FROM florida_positions;
List the top 5 universities by total salaries and payments
SELECT
University,
SUM(money_amount) AS total_money
FROM florida_positions
GROUP BY University
ORDER BY total_money DESC
LIMIT 5;
University |
total_money |
UF |
1167497173 |
USF |
489160622 |
FSU |
413407880 |
FIU |
347706473 |
UCF |
333182767 |
Count the total salaried employees for Florida's public universities
SELECT COUNT(*)
FROM florida_positions
WHERE AnnualSalary != '';
Count and sum payments by employee type for Florida's public universities
SELECT EmployeeType,
COUNT(*),
SUM(money_amount)
FROM florida_positions
GROUP BY EmployeeType;
EmployeeType |
COUNT(*) |
SUM(money_amount) |
OPS |
23919 |
156121051 |
SALARIED |
59865 |
3166555948 |
Number of professors who are not salaried
SELECT COUNT(*)
FROM florida_positions
WHERE ClassTitle LIKE '%PROFESSOR%'
AND EmployeeType != 'SALARIED';
Rank colleges by salaries and payments of their athletic departments
SELECT
University,
SUM(money_amount) as total_money
FROM florida_positions
WHERE BudgetEntity = 'Intercollegiate Athletics'
GROUP BY University
ORDER BY total_money DESC;
University |
total_money |
FSU |
15483680 |
USF |
10173014 |
FIU |
6245761 |
FGCU |
3001760 |
UNF |
2780809 |
FAMU |
2504714 |
UWF |
1494741 |
FAU |
42008 |
FPU |
42000 |
Rank BudgetEntities by total spent on salaries and payments
SELECT
BudgetEntity,
SUM(money_amount) as total_money
FROM florida_positions
GROUP BY BudgetEntity
ORDER BY total_money DESC;
BudgetEntity |
total_money |
Educational & General |
1938000138 |
Contracts & Grants |
829715351 |
Auxiliaries |
278804776 |
|
179878850 |
Intercollegiate Athletics |
41768487 |
Student Activities |
29284761 |
Data Center Operations/Computer Services-Aux |
7902690 |
Student Financial Aid |
5700871 |
Teaching Hospitals and Allied Clinics - FSU |
5473926 |
Technology Fee |
4148052 |
Teaching Hospitals and Allied Clinics - UCF |
1470648 |
Board Approved Fees |
528449 |
Ten most popular first names among professors
This seems frivolous but remember that our ultimate goal is to join the babynames
table based on first name. So might as well remind ourselves that this dataset does indeed include first names:
SELECT
FirstName,
COUNT(*) AS professors_count
FROM florida_positions
WHERE ClassTitle LIKE '%PROFESSOR%'
GROUP BY FirstName
ORDER BY professors_count DESC
LIMIT 10;
FirstName |
professors_count |
MICHAEL |
412 |
DAVID |
394 |
JOHN |
376 |
ROBERT |
330 |
WILLIAM |
294 |
JAMES |
273 |
THOMAS |
226 |
RICHARD |
189 |
MARK |
179 |
CHARLES |
159 |
Hmmm…not a lot of traditionally female names in this list of most common professor names.
Ten most popular first names in leadership positions
SELECT
FirstName,
COUNT(*) AS people_count
FROM florida_positions
WHERE
ClassTitle LIKE '%PROVOST%'
OR ClassTitle LIKE '%DEAN%'
OR ClassTitle LIKE '%PRESIDENT%'
OR ClassTitle LIKE '%VP%'
OR ClassTitle LIKE '%HEAD%'
GROUP BY FirstName
ORDER BY people_count DESC
LIMIT 10;
FirstName |
people_count |
JOHN |
15 |
ROBERT |
11 |
DAVID |
10 |
JAMES |
10 |
MARK |
10 |
MICHAEL |
10 |
THOMAS |
10 |
MARY |
9 |
WILLIAM |
8 |
SUSAN |
7 |
There's a few Marys and Susans in this breakdown.
Ten most popular first names in jobs earning $200,000+
SELECT
FirstName,
COUNT(*) AS people_count
FROM florida_positions
WHERE
money_amount >= 200000
GROUP BY FirstName
ORDER BY people_count DESC
LIMIT 10;
FirstName |
people_count |
JOHN |
32 |
ROBERT |
32 |
MICHAEL |
30 |
DAVID |
24 |
THOMAS |
22 |
MARK |
20 |
WILLIAM |
18 |
JAMES |
17 |
JOSEPH |
14 |
DANIEL |
12 |
However, this list of common names seems to be male-dominated. This isn't a great statistical measure of course – it could be the majority of $200K+ earners are women with uncommon names. We just don't know yet.
So let's move on to table joins.