I am looking for the AVERAGE (overall) of the MINIMUM number (grouped by person).
My table looks like this:
Rank Name
1 Amy
2 Amy
3 Amy
2 Bart
1 Charlie
2 David
5 David
1 Ed
2 Frank
4 Frank
5 Frank
I want to know the AVERAGE of the lowest scores. For these people, the lowest scores are:
Rank Name
1 Amy
2 Bart
1 Charlie
2 David
1 Ed
2 Frank
Giving me a final answer of 1.5 – because three people have a MIN(Rank) of 1 and the other three have a MIN(Rank) of 2. That’s what I’m looking for – a single number.
My real data has a couple hundred rows, so it’s not terribly big. But I can’t figure out how to do this in a single, simple statement. Thank you for any help.
Selecting the set of minimum values is straightforward. The cast() is necessary to avoid integer division later. You could also avoid integer division by casting to float instead of decimal. (But you should be aware that floats are “useful approximations”.)
Now you can use the minimums as a common table expression, and select from it.
If you happen to need to do the same thing on a platform that doesn’t support common table expressions, you can a) create a view of minimums, and select from that view, or b) use the minimums as a derived table.