比如有一張工人資訊的表gongrenxinxi,里面有一個包含工資的欄位gongzi,將工資按降序排列,找出工資位于95%的人的工人資訊
uj5u.com熱心網友回復:
工資位于95%不懂
uj5u.com熱心網友回復:
count算出總人數,再乘0.95,取整,這個數字就是95分位數,再將表order by 排序,用rownum讀出這條記錄。uj5u.com熱心網友回復:
剛在網上搜了一下,工資的95分位數不是這么算的,很復雜。我這是之前工時分析用的,看來不一樣。
uj5u.com熱心網友回復:
我想了想,應該是先對資料集進行排序,排序后再用row_num()進行編號,然后再用count(*)*0.5取整,使其與行號相等,讀出這條記錄
uj5u.com熱心網友回復:
工資位于95%
不懂
一張起終點表,包含了不同人不同路徑的許多資料,現在針對某一條起點i,終點j 的路徑,對他的出行時間進行升序排序然后編號,想要求出編號位置位于全部編號的95%的出行時間,其求95分位數出行時間,程式如下,出現
FUNCTION TH95_TRAVEL_TIME 已編譯
Errors: check compiler log 的錯誤,本人初學者,求大神解答疑惑,
create or replace function th95_travel_time(i number,j number)
return number
as
begin
declare cursor cu_travel_time is
select row_number() over (order by 出行時間) rn,出行時間 from 起終點表 where 地點A=i and 地點B=j;
row_number 起終點表.rn%type;
travel_time 起終點表.出行時間%type;
travel_time_95th 起終點表.出行時間%type;
odjilu 起終點表.rn%type;
begin
select count(*) into odjilu from 起終點表 where 地點A=i and 地點B=j; --將查詢到的記錄數目賦值給odjilu
open cu_travel_time;
fetch cu_travel_time into row_num,travel_time;
loop
if row_num=round(odjiuli*0.95,0) then
travel_time_95th:=travel_time;
exit;
end if;
fetch cu_travel_time into row_num,travel_time;
end loop;
close cu_travel_time;
return travel_time_95th;
end;
end th95_travel_time;
uj5u.com熱心網友回復:
SELECT percentile_cont(0.95) within GROUP( ORDER BY 工資) as p95 from 表
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/116431.html
標籤:基礎和管理
