TSL语言基础 > SQL基础到TS-SQL > TS-SQL语法 > SELECT查询语句 > GROUP BY 子句

THISGROUP    

  •  如果要查询分组的子结果集,可以使用子select查询语句对thisgroup进行子查询。
     ThisGroup不是一个数据,仅仅只是子数据集,必需用SELECT的FROM子句来访问
    例如有列”证券”,”行业”,”涨幅(%)”的二维数组
    t:= array(
    ("证券":"SH600028","行业":"采矿业","涨幅(%)":-1.01),
    ("证券":"SH600030","行业":"金融业","涨幅(%)":0.07),
    ("证券":"SH601166","行业":"金融业","涨幅(%)":-1.6),
    ("证券":"SH601211","行业":"金融业","涨幅(%)":0.29),
    ("证券":"SH601225","行业":"采矿业","涨幅(%)":-0.49),
    ("证券":"SH601658","行业":"金融业","涨幅(%)":-1.62),
    ("证券":"SH601668","行业":"建筑业","涨幅(%)":1.16));
    return select ["行业"],maxof(["涨幅(%)"]) as "最大涨幅" from t group by ["行业"] end;

    这种写法熟悉SQL的都可以很了解,但是如何访问在[“涨幅(%)”]的最大值发生时候的[“证券”]的值呢?
    ThisGroup可以解决这个问题
    return select ["行业"],mzf:=maxof(["涨幅(%)"]) as "最大涨幅",
        vselect ["证券"] from thisgroup where ["涨幅(%)"]=mzf end as "最大涨幅券"
    from t group by ["行业"] end;

    当然用户也可以使用select * from ThisGroup end来得到分组的完全值
    返回结果如下: