背景:

近来接到的需求里有很多在某个区域里去最值,然后需要所有详情字段的情况,故探索出这个新解法,传统的基本都是用窗口函数,或者group by 后用子查询去原表关联

实操:

建表:

create  table tmp( 	
	id int , 	 
	name string , 	
	score int , 	
	sex string ,
	class string  
) row fromat delimited fields terminated by ','
;

;`
导入数据:
load data local inpath ‘/xxxxx’ into table tmp ;

数据如下: select * from tmp ;
在这里插入图片描述

实现方法:

  • 方法1
    窗口函数
  • 方法2
    使用group by class 后与原表关联取出详细字段
  • 方法3
    使用struct方法
    构造struct ,具体sql如下,
>    select class
>             ,max(struct(score,id ,name,sex,class)).col1 as score
>             ,max(struct(score,id ,name,sex,class)).col2 as id
>             ,max(struct(score,id ,name,sex,class)).col3 as name
>             ,max(struct(score,id ,name,sex,class)).col4 as sex
>    from tmp group by class ;

sql跑出的结果如下:
在这里插入图片描述

切记:可根据自己的实际情况构造struct,具体比较时先按第一个字段进行比较,若相同则比较第二个,以此类推 ;
同理也可实现每个班最低分学生的详情

----(待更新)

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐