sql server 2005 查找并统计前10名数量最多的用户
sqlserver2005查找并统计前10名数量最多的用户(如下格式)字段1字段2字段3id名字110.名字25.名字38.名字16.名字315.名字420要求将“字段2...
sql server 2005 查找并统计前10名数量最多的用户(如下格式)
字段1 字段2 字段3
id 名字1 10
. 名字2 5
. 名字3 8
. 名字1 6
. 名字3 15
. 名字4 20
要求将“字段2”名字相同的就把“字段3”的数字相加as个新“字段4”,再TOP 前10名数量最多的用户,SQL语句怎么写? 展开
字段1 字段2 字段3
id 名字1 10
. 名字2 5
. 名字3 8
. 名字1 6
. 名字3 15
. 名字4 20
要求将“字段2”名字相同的就把“字段3”的数字相加as个新“字段4”,再TOP 前10名数量最多的用户,SQL语句怎么写? 展开
4个回答
2015-11-14 · 知道合伙人软件行家
关注
展开全部
例表tab_test ,数量列名:sl
select top 10 * from tab_test order by d desc
语句执行,先将结果集按 sl 的降序 排序,然后使用 top 10 选择前10行数据。
如果单一用户有多条记录,那需要将用户分组,计算数量
例表tab_test ,数量列名:sl,用户列名: user
select top 10 user,sum(sl) as 'sl_xj' from tab_test
group by user order by sl_xj desc
展开全部
考虑到效率期间,需要算后重新order by一下
SELECT top 10 字段2
FROM (SELECT 字段2, SUM(字段3) AS 字段4
FROM tab GROUP BY 字段2) t
ORDER BY 字段4 DESC
SELECT top 10 字段2
FROM (SELECT 字段2, SUM(字段3) AS 字段4
FROM tab GROUP BY 字段2) t
ORDER BY 字段4 DESC
追问
代码是不是没写全还是写漏了?运行不起来,'ORDER' 附近有语法错误。
追答
你确定你没COPY错误么?我在SQL SERVER 2005下面跑了,成功的哦。或者你把那个AS 字段4那里改成 AS filed4,然后ORDER BY 字段4 改为ORDER BY field4看看,有些系统对中文别名+数字敏感好像。
--CREATE TABLE TAB(字段1 SMALLINT, 字段2 CHAR(10),字段3 SMALLINT)
insert into tab values (1, 'aaa', 10);
insert into tab values (2, 'bbb', 5);
insert into tab values (3, 'ccc', 8);
insert into tab values (4, 'aaa', 6);
insert into tab values (5, 'ccc', 15);
insert into tab values (6, 'ddd', 20);
SELECT top 10 字段2
FROM (SELECT 字段2, SUM(字段3) AS 字段4
FROM tab GROUP BY 字段2) t
ORDER BY 字段4 DESC
-----------
ccc
ddd
aaa
bbb
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select top(10)* from Table order by qty desc
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我帮楼上的SQL语句改动一下,你再试试:
SELECT top 10 字段2,字段4
FROM (SELECT 字段2, SUM(字段3) AS 字段4
FROM tab GROUP BY 字段2 ) t
ORDER BY 字段4 DESC
SELECT top 10 字段2,字段4
FROM (SELECT 字段2, SUM(字段3) AS 字段4
FROM tab GROUP BY 字段2 ) t
ORDER BY 字段4 DESC
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询