对比mysql和hive:mysqlzhong ,分组求不同组的前几条记录

网友投稿 603 2022-10-10

对比mysql和hive:mysqlzhong ,分组求不同组的前几条记录

对比mysql和hive:mysqlzhong ,分组求不同组的前几条记录

一、第一题

1、建表语句

create table mian61( hobby varchar(20), name varchar(20), age int)charset=utf8;

2、表中插入数据

insert into mian61 values('a','huangxiaoming',45),('c','huangxiaoming',45),('d','huangxiaoming',45),('f','huangxiaoming',45),('b','huangzitao',36),('c','huangzitao',36),('d','huangzitao',36),('e','huangzitao',36),('c','huanglei',41),('d','huanglei',41),('e','huanglei',41),('a','liushishi',22),('d','liushishi',22),('e','liushishi',22),('e','liudehua',39),('f','liudehua',39),('d','liudehua',35),('d','liuyifei',35),('a','huangxiaoming',45),('e','liuyifei',35);

3、需求如下

求出不同爱好中,年龄最大的两个人(爱好,年龄,姓名)

4、实现代码

select a.* from mian61 a where (select count(*) from mian61 b where b.hobby= a.hobby and a.age > b.age)<2 order by a.hobby,a.age desc;

结果如下:

二、第二题

1、建表语句

create table mian62( sid int, name varchar(20), subject varchar(20), score int)charset=utf8;

2、表中插入数据

insert into mian62 values(1,'张三','语文',90),(1,'张三','数学',80),(1,'张三','外语',70),(1,'张三','物理',55),(1,'张三','化学',59),(2,'李四','语文',88),(2,'李四','数学',78),(2,'李四','外语',71),(2,'李四','物理',51),(2,'李四','化学',60),(3,'王五','语文',95),(3,'王五','数学',83),(3,'王五','外语',80),(3,'王五','物理',60),(3,'王五','化学',58);

3、需求如下

求出每个学生中,分数最高的两个科目(姓名,科目,分数)求出每个科目中,分数最高的前2名(姓名,科目,分数)

4、求出每个学生中,分数最高的两个科目(姓名,科目,分数)

select *from mian62 awhere (select count(*) from mian62 b where a.name=b.name and a.score < b.score)<2order by a.name,a.score desc;

结果如下:

5、求出每个科目中,分数最高的前2名(姓名,科目,分数)

select *from mian62 awhere (select count(*) from mian62 b where a.subject=b.subject and a.score < b.score)<2order by a.subject,a.score desc;

结果如下:

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:对比mysql和hive:分组,取不同组前几条记录-explode函数的使用
下一篇:mysql实现分组排序和不分组排序
相关文章

 发表评论

暂时没有评论,来抢沙发吧~