A:
实现示例:取指定日每个行业涨幅前3只股票的集合
endt:=20250711T;
//--取数据:指定日A股的行业与当日涨幅
setsysparam(pn_date(),endt);
stocks:=getAbkbydate("A股",endt);
arr:= select thisrow as "StockID",spec(StockSWIndustryName1(),thisrow) as 'hy',
spec(stockzf3(),thisrow) as 'zf'
from stocks end;
//--分组并排序,而后取每个行业的前三只
t:=array();//存放前三只股票
//通过select+group by对arr进行分组并循环取每组排序后的前三只,合并到t数组中
select t&=select drange(0 to 2)* from thisgroup order by ['zf'] desc end
from arr group by ['hy'] end;
return t;
返回结果展示:
其中:
thisgroup:表示分组后的当前组,即是源数据的子集,由group by产生,需要用select子语句进行访问。
select drange(0 to 2)* :表示取前3行,下标从0开始。
t&= :表示将数组合并到t中。