select查询类别最大问题

lucunhai 2005-06-09 04:11:36
一个表有四个字段
id bh sale
1 001 50
2 002 60
3 001 70
4 004 60
5 002 65
6 001 85
要查出每个bh的sale最大
要的结果是
id bh sale
1 001 85
2 002 65
3 004 60
如何写出此句,多谢!
...全文
162 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
posonhuang 2005-06-10
  • 打赏
  • 举报
回复
wangdehao(找找找)是对的,不过后面应该加 order by sale desc,这样才完整。
631799 2005-06-10
  • 打赏
  • 举报
回复
select * from tb a where not exists (select 1 from tb where bh=a.bh and sale>a.sale)
lucunhai 2005-06-10
  • 打赏
  • 举报
回复
不好意思。 查询结果的id号是随便写的,应是主表的id.

id bh sale
6 001 85
5 002 65
4 004 60

wangdehao 2005-06-09
  • 打赏
  • 举报
回复
看不出楼主查询结果的id号是怎么来的
如果需要查出各个bh sale量最大的那条记录可以这样

select * from table where id in (select id from table a where sale=(select max(sale) from table where bh=a.bh ))
duanduan1122 2005-06-09
  • 打赏
  • 举报
回复
GROUP BY
将表分为组。组可包含列名、结果或计算列。有关更多信息,请参见 SELECT。

duanduan1122 2005-06-09
  • 打赏
  • 举报
回复
使用 GROUP BY 分组多行
GROUP BY 子句用来为结果集中的每一行产生聚合值。如果聚合函数没有使用 GROUP BY 子句,则只为 SELECT 语句报告一个聚合值。

以下示例返回分类 2 中每种产品已销售的单位数量:

USE Northwind
SELECT OrdD.ProductID AS ProdID,
SUM(OrdD.Quantity) AS AmountSold
FROM [Order Details] AS OrdD JOIN Products as Prd
ON OrdD.ProductID = Prd.ProductID
AND Prd.CategoryID = 2
GROUP BY OrdD.ProductID

下面是结果集:

ProdID AmountSold
----------- -----------
3 328
4 453
5 298
6 301
8 372
15 122
44 601
61 603
63 445
65 745
66 239
77 791

(12 row(s) affected)

GROUP BY 关键字后面跟着列的列表,称为分组列。GROUP BY 子句限制结果集中的行;对于分组列中的每个非重复值只有一行。每个结果集行都包含与其分组列中特定值相关的汇总数据。

当 SELECT 语句中包含 GROUP BY 关键字时,对可以在选择列表中指定的项有一些限制。在该选择列表中所允许的项目是:

分组列。


为分组列中的每个值只返回一个值的表达式,例如将列名作为其中一个参数的聚合函数。这些函数称为矢量聚合。
duanduan1122 2005-06-09
  • 打赏
  • 举报
回复

select bh,max(sale) sale
from yourtable
group by bh
szh3210 2005-06-09
  • 打赏
  • 举报
回复
select hh,max(sale) from tab group by hh

34,873

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧