怎样在Select 语句的每个分组中取前几位的记录?

XRS 2003-05-12 07:26:41
例如:
select 地区,种类,sum(数量) from table1 group by 地区,种类 order by 种类, 数量 desc
结果如下:
地区 种类 销售数量
gz aa 100
sh aa 80
bj aa 60
. . .
. . .
sh cc 120
bh cc 70
gz cc 55
. . .
现在需要的结果是按种类的每个分组中取前2位,应该怎样写?
...全文
86 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
joygxd 2003-05-12
  • 打赏
  • 举报
回复
select aa.地区,aa.种类,aa.sum(数量)
from table1 aa,(select top 2 * from table1 where 种类=aa.种类 group by 种类,数量 order by 种类, 数量) bb
where aa.地区=bb.地区 and aa.种类=bb.种类
group by aa.地区,aa.种类 order by aa.种类, aa.数量 desc
joygxd 2003-05-12
  • 打赏
  • 举报
回复
select aa.地区,aa.种类,aa.sum(数量)
from table1 aa,(select top 2 * from table1 group by 数量,种类 order by 种类, 数量) bb
where aa.地区=bb.地区 and aa.种类=bb.种类
group by aa.地区,aa.种类 order by aa.种类, aa.数量 desc
triout 2003-05-12
  • 打赏
  • 举报
回复
select a.地区,a.种类,sum(a.销售数量) from 你的表名 a Inner Join
(select Top 2 地区,种类,销售数量 from 你的表名 order by 销售数量 asc) b
On (a.地区=b.地区 AND a.种类=b.种类) Group By a.种类,a.地区
pengdali 2003-05-12
  • 打赏
  • 举报
回复
select 地区,种类,sum(数量) 销售数量 from table1 as tem
group by 地区,种类 having sum(数量) in (select top 2 sum(数量) from table1

group by 地区,种类 having 地区=tem.地区 and 种类=tem.种类 order by 种类, 数量 desc)

order by 种类, 数量 desc
pengdali 2003-05-12
  • 打赏
  • 举报
回复
select select top 2 地区,种类,sum(数量) 销售数量 from table1 as tem
group by 地区,种类 having sum(数量) in (select sum(数量) from table1 group by 地区,种类 having 地区=tem.地区 and 种类=tem.种类 order by 种类, 数量 desc) order by 种类, 数量 desc
愉快的登山者 2003-05-12
  • 打赏
  • 举报
回复
select * from
(select 地区,种类,sum(数量) 销售数量 from table1 group by 地区,种类) as A
where 地区+cast(销售数量 as varchar) in
(select top 2 地区+cast(sum(数量) as varchar) from table1 where 种类 = A.种类 group by 地区 order by 数量 desc)
order by 种类, 数量 desc
XRS 2003-05-12
  • 打赏
  • 举报
回复
都还是不行。。以上几种方法大都提示:
列 'table1.数量' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。

34,837

社区成员

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

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