在Mysql workbench中查询单个表
我有下表: 订单表在Mysql workbench中查询单个表,mysql,sql,database,Mysql,Sql,Database,我有下表: 订单表 City IDCustomer NumProd M. 0001. 9 M. 0002. 9 M. 0001. 11 M. 0002. 7 L. 0003. 2 L. 0003. 4 我想写一个方法来显示客户的id和他在每个城市中的最高分数。输出应该是 City. IDCustomer NumP
City IDCustomer NumProd
M. 0001. 9
M. 0002. 9
M. 0001. 11
M. 0002. 7
L. 0003. 2
L. 0003. 4
我想写一个方法来显示客户的id和他在每个城市中的最高分数。输出应该是
City. IDCustomer NumProd
M. 0001. 11
L. 0003 4
我怎样才能轻松做到这一点?您只是在寻找聚合吗
select idcustomer, max(numprod)
from t
group by idcustomer;
编辑:
一种方法使用相关子查询:
select t.*
from t
where t.numprod = (select max(t2.numprod) from t t2 where t2.city = t.city);
另一种常用方法是行编号:
选择t*
从中选择t*,
按城市顺序按numprod desc as seqnum划分的分区上的行数
从t
T
其中,seqnum=1 看起来您正在按查询查找基本分组
SELECT IDCustomer,MAX(NumProd) FROM OrderTable GROUP BY IDCustomer;
GROUP BY语句将具有相同值的行分组到汇总行中,通常与COUNT、MAX、SUM等聚合函数一起使用
一般语法为:
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);
我的问题中有一个错误,修复了它,谢谢,它起作用了,但是你推荐的网站/教程是否理解这种类型的相关子查询?正如我所说,它是有效的,但我不明白它为什么有效,如果下个月我不得不做类似的事情,我可能无法做到。谢谢我的问题中有一个错误,修复了它。到目前为止,您尝试了什么?你被困在哪里?@NicoHaase我尝试了一个子查询,但sql给了我错误,因为子查询中有2列,请通过编辑将所有尝试添加到问题中,并显示错误消息