社区
疑难问题
帖子详情
求:一个分组,选取前N条纪录的SQL写法
513cat
2003-07-31 06:32:25
现有数据表TableA,
Col1 Col2 Col3 Col4
----------------
其中Col4为Integer
现在需要以Col1分组,选择出每组的以Col4为和的前十条纪录
比如Col2记录的是公司名称,Col1纪录的是该公司所在城市名称,Col4记录的是该公司的员工总数。那么现在需要选择全国每个城市中,员工最多的前N家公司,
即:北京的公司员工最多的前N家公司,上海的公司员工最多的前N前公司。。。。。。等等。
...全文
42
11
打赏
收藏
求:一个分组,选取前N条纪录的SQL写法
现有数据表TableA, Col1Col2Col3Col4 ---------------- 其中Col4为Integer 现在需要以Col1分组,选择出每组的以Col4为和的前十条纪录 比如Col2记录的是公司名称,Col1纪录的是该公司所在城市名称,Col4记录的是该公司的员工总数。那么现在需要选择全国每个城市中,员工最多的前N家公司, 即:北京的公司员工最多的前N家公司,上海的公司员工最多的前N前公司。。。。。。等等。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qianguob
2003-07-31
打赏
举报
回复
select top 10 col2,col4 from table
group by col2,col4
order by col4 desc
我想这样应该可以实现你的要求。
nboys
2003-07-31
打赏
举报
回复
select top 10 * from TableA d where Col4=(select max(Col4) from TableA where Col1=d.Col1)
nboys
2003-07-31
打赏
举报
回复
select * from TableA d where Col4=(select max(Col4) from TableA where Col2=d.Col2 and Col3=d.Col3)
zjcxc
2003-07-31
打赏
举报
回复
照我的理解话,应该如下处理:
--定义数据测试环境,用表名代表城市名,字段名代表公司名,字段id代表员工数
declare @tb table(Cite varchar(50),CoName varchar(50),col3 int,col4 int)
insert into @tb(cite,coname,col4)
select object_name(id),name,colid from syscolumns
--为了处理方便,使用临时表
select id=identity(int,1,1),cite,coname,sum(col4) as col4
into #tb
from @tb group by cite,coname
--查询得到结果
select * from #tb a
where id in (select top 10 id from #tb
where cite=a.cite and coname=a.coname
order by col4 desc)
--删除临时表
drop table #tb
zjcxc
2003-07-31
打赏
举报
回复
你的分组条件不对
如果照你的意思统计的话,每个城市都只会有一条总记录,当然不存在你说的前10个的问题.
照你后面的意思
比如Col2记录的是公司名称,Col1纪录的是该公司所在城市名称,Col4记录的是该公司的员工总数。那么现在需要选择全国每个城市中,员工最多的前N家公司,
即:北京的公司员工最多的前N家公司,上海的公司员工最多的前N前公司。。。。。。等等。
应该是按col1,col2分组才对.
不知我的理解是否正确?
lggege8000
2003-07-31
打赏
举报
回复
select * from 表 tem where col4 in (select top 10 col4 from 表 a tem where coll=a.coll order by a.coll desc)
woyaofengle
2003-07-31
打赏
举报
回复
select * from 表 tem where Col4 in (select top 10 Col4 from 表 where Col1=tem.Col1)
txlicenhe
2003-07-31
打赏
举报
回复
select * from TableA a where Col4 in (select top 10 Col4 from TableA where Col1=a.Col1 order by Col4 desc)
edisonwong
2003-07-31
打赏
举报
回复
select col1,col2,col4
from tab
where (select count(*)
from tab b
where b.col1=tab.col1
and b.col4>=tab.col4)<=10
order by 1,3 desc
pengdali
2003-07-31
打赏
举报
回复
select * from 表 tem where Col4 in (select top 10 Col4 from 表 where Col1=tem.Col1 order by Col4 desc)
pengdali
2003-07-31
打赏
举报
回复
select * from 表 tem where Col4 in (select top 10 Col4 from 表 where Col1=tem.Col1)
SQL
命令速成(一)
2.员工表,员工号empno,姓名name,部门deptno,经理manager,入职时间hiredate,薪水salary(总长度7位,小数点后精确到两...视图是基于
SQL
语句的结果集的可视化表,仕途中的字段就是来自
一个
或多个数据库中的真实的表中的字段.
SQL
基础
SQL
是访问和处理关系数据库的计算机标准语言。 No
SQL
是非
SQL
的数据库,包括MongoDB、Cassandra、Dynamo等等,它们都不是关系数据库。有很多人鼓吹现代Web程序已经无需关系数据库了,只需要使用No
SQL
就可以。但事实上...
SQL
注入基础知识
Order by作用:按
一个
或者多个字段排序查询结果,可以是升序也可以是降序,默认为升序。12.2order by语法13.
sql
中的运算数字型不需要考虑单引号等进行闭合问题。字符串本身
前
后自带引号进行闭合,一般需要加引号闭合...
MaxCompute
SQL
大数据公开数据集实战
带着这个疑问,我们来查看某
一个
日期的电影信息: -- 查询20170304分区中的10
条
数据 select * from public_data.dwd_product_movie_basic_info where ds ='20170304' limit 10; 返回结果如下: 可以看到这里ds并不是...
oracle批量导入与导出——
SQL
loader&SPOOL用法简记
②:被导入的数据可以为csv、txt、dat文件,文本格式必须全部一致,分割符号格式全部一致否则
一个
提交内无法导入数据; ③:在DOS窗口命令批量
sql
*loader导入数据 或 直接运行编写好的.bat批处理文件直接导入数据库...
疑难问题
22,209
社区成员
121,731
社区内容
发帖
与我相关
我的任务
疑难问题
MS-SQL Server 疑难问题
复制链接
扫一扫
分享
社区描述
MS-SQL Server 疑难问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章