Chinaunix

标题: 【讨论中】求助!请教一条查询语句! [打印本页]

作者: zhuyongxin    时间: 2013-07-03 12:11
标题: 【讨论中】求助!请教一条查询语句!
本帖最后由 cenalulu 于 2013-07-03 12:37 编辑

请教各位大神一条查询语句。
数据表内容如下:
批号        电流        电压        效率
1        1        3        16%
1        3        2        17%
2        1        2        16%
2        2        3        18%
2        2        4        18%
要求查询每批效率值最大时的电流和电压值,如果某批中有两组以上的效率值等于本批中的效率最大值(例如上面批号2的两组数据的效率值都是18%),则任取一组数据即可。
查询结果可以是:
批号        电流        电压        效率
1        3        2        17%
2        2        3        18%
也可以是:
批号        电流        电压        效率
1        3        2        17%
2        2        4        18%

想了好长时间了,也没办法实现,希望各位大神能帮我解决一下!谢谢啦!
作者: cenalulu    时间: 2013-07-03 12:40
select
`批次`,
substring_index(group_concat(`电流` order by `效率`),',',1) as 电流,
substring_index(group_concat(`电压` order by `效率`),',',1) as 电压,
substring_index(group_concat(`效率` order by `效率`),',',1) as 效率,
from
table_name
group by `批次`
作者: zhuyongxin    时间: 2013-07-03 13:21
谢谢大神!好不容易才看懂了这个语句。追问大神一句,如果不使用函数有办法解决吗?
作者: cenalulu    时间: 2013-07-03 15:16
回复 3# zhuyongxin


    也有其他的,不过效率不行,写起来也麻烦。 not exist 或者left join这种
作者: 姚福坚    时间: 2013-07-25 18:41
先用order by排序,再用group by 删选就行了 select * from (select * from table  order by 效率 desc) as t group by 批号
作者: 唐双涵    时间: 2013-08-16 15:51

作者: 地球引力的囚徒    时间: 2013-09-15 18:47
select 批号,电流,电压,max(效率) from table_name group by 批号;
so easy~~~
作者: 南瓜-学习者    时间: 2013-10-12 14:02
本帖最后由 南瓜-学习者 于 2013-10-12 14:22 编辑

SELECT a.pici,b.dianliu,b.dianya,a.xiaolv FROM
(select pici,MAX(xiaolv) xiaolv from 表名 group by 1) a
LEFT JOIN 表名 b ON a.pici=b.pici AND a.xiaolv=b.xiaolv GROUP BY 1;

或者


SELECT pici,dianliu,dianya,xiaolv FROM
(SELECT * FROM 表名 ORDER BY xiaolv DESC) a GROUP BY 1;





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2