譬如表test内容如下
A B
1 1.1
1 0.5
2 0.6
1 3.1
2 2.3
3 2.4
2 6.7
1 0.5
1 0.6现在需要按A栏分组查询B栏中的第三大值,譬如A=1时,B中的第三大值为0.6,如果B栏中数据少于三个,第三大值为空
需要的输出结果如下
A thirdB
1 0.6
2 2.3
3 null我知道查询最大值时可以用以下语句实现
select A, max(B) as thirdB from test group by A;
怎么用尽可能简单的方式查询第三大值?
注意A栏中数据是随机的,没法直接按A栏中的数据用limit查询B中的第三大值
A B
1 1.1
1 0.5
2 0.6
1 3.1
2 2.3
3 2.4
2 6.7
1 0.5
1 0.6现在需要按A栏分组查询B栏中的第三大值,譬如A=1时,B中的第三大值为0.6,如果B栏中数据少于三个,第三大值为空
需要的输出结果如下
A thirdB
1 0.6
2 2.3
3 null我知道查询最大值时可以用以下语句实现
select A, max(B) as thirdB from test group by A;
怎么用尽可能简单的方式查询第三大值?
注意A栏中数据是随机的,没法直接按A栏中的数据用limit查询B中的第三大值
解决方案 »
- 新手主从服务器问题,请求帮助
- mysql数据库,查看和修改concurrent_insert的问题
- 您能帮我解决吗?mysql 自表关联 外键约束 插入数据问题
- WIN XP下刚装完MySql无法连接
- mysql decimal(5,2) 类型 怎样能正确的显示出前导0?
- 求救~!请各位大虾帮忙!
- 送分:如何限制MYSQL数据库大小
- PHP连MySQL问题!
- 找人安装调试apache和mysql
- 虚拟机与主机ping不通,搞了一天了,求帮忙,解决的话微信发个小红包
- mysql where in 语句很慢,求助
- Lost connection to MySQL server at 'reading initial communication packet'
SELECT a.A,a.B FROM ttqp a LEFT JOIN ttqp b ON a.a=b.a AND a.b<=b.b GROUP BY a.A,a.B HAVING COUNT(DISTINCT b.b)=3) b
ON a.a=b.a2的B也应该为0.6?
[征集]分组取最大N条记录方法征集,及散分....
(
select *
from tb
group by A
)tb3 left join
(
select A,B
from tb tb1
where (select count(*) from tb tb2 where tb1.A=tb2.A and tb1.B>tb2.B)=2
)tb4 on tb3.A=tb4.A