Problem
We want to find out what answers to questions like:
What is the salary that top 1 percent of people are making?
What is the credit score that the lowest 15% have?
What is the cutoff predictive risky score that will raise alerts on the riskiest 0.1% of credit card transaction?What is the salary that top 1 percent of people are making?
What is the credit score that the lowest 15% have?
Solution
This problem can be solved using the same approach as described in Find the cutoff value for the top n records. We can always convert the percentile to the top-n-records (or bottom-n-records) by multiplying the size of the table and the percentile. However, there is a simpler way to do this. We can use Oracle function percentile_disc() to return the cutoff value given a certain percentile and ordering. Let's use a table that contains 100 random numbers as an example.SQL> select * from TBL_100_RND where rownum <10;
NUM |
---|
-.58413539 |
1.31513578 |
2.16901993 |
.596910933 |
.208190221 |
.179899195 |
-.63028597 |
.525443855 |
-.52158424 |
The following query returns the cutoff value (v) for the top 10%.
SQL> select percentile_disc(0.1) within group(order by num desc) as cutoff from TBL_100_RND;
cutoff |
---|
1.13239998 |
The following query verifies that the cutoff value 1.13239998 indeed produces 10% of the records.
SQL> select count(1) from TBL_100_RND where num>=1.13239998;
COUNT(1) |
---|
10 |
No comments:
Post a Comment