Calculate 5th percentile based on another column

I would like to have some help in calculating 5th percentile value of column 2 for each site, the input is like below:

site val1 val2
002 10 25.3
002 20 25.3
002 30 25.3
002 40 20
002 50 20
002 60 20
002 70 20
002 80 30
002 90 30
002 100 30
002 120 30
003 20 30.3
003 20 30.3
003 30 20
003 40 40

Based on what i found, I could write sth like: awk '{s[NR]=$2} END{print s[int(NR*0.05+0.5)]}' , but this only works for the same site (i.e.,column 1 is identical), how to do this for multiple sites? The desired output should be:
site val
002 10
003 20

Thank you.

Try this, please feel free to correct any errors in my calculations:-

awk '
        NR > 1 {
                ++T[$1]
                A[$1 FS T[$1]] = $2
        }
        END {
                print "Site", "Val"
                for ( k in T )
                {
                        idx = sprintf( "%.0f", T[k] * 0.05 )
                        idx = ( idx == 0 ? 1 : idx )
                        print k, A[k FS idx]
                }
        }
' OFS='\t' file

@Yoda, It seems working. Thank you.
@Yoda, could you please add explanation to each line? Thank you.