SQL排名问题

q520525745 2010-12-31 12:33:03

SELECT COUNT(*) AS MC FROM table WHERE uid=变量 ORDER BY COUNT(*) DESC

表里的字段 id uid fuid
我想查询当前uid的名次排名的根据是fuid数量越多排名就越高
谁能帮我在上面这句的基础上修改下
...全文
100 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
飘零一叶 2010-12-31
  • 打赏
  • 举报
回复
楼主参考
IF OBJECT_ID('Sales') IS NOT NULL DROP TABLE Sales
GO
CREATE TABLE Sales
(
empid varchar(10) primary key not null,
mgrid varchar(10) not null,
qty int not null
)
insert into Sales
select 'A','Z',300 union all
select 'B','X',100 union all
select 'C','X',200 union all
select 'D','Y',200 union all
select 'E','Z',250 union all
select 'F','Z',300 union all
select 'G','X',100 union all
select 'H','Y',150 union all
select 'I','X',250 union all
select 'J','Z',100 union all
select 'K','Y',200

CREATE NONCLUSTERED INDEX IDX_GTY_EMPID ON Sales(qty,empid)
CREATE NONCLUSTERED INDEX IDX_GTY_EMPID ON Sales(MGRID,qty,empid)

--1.
SELECT empid,qty,ROW_NUMBER() OVER(ORDER BY qty) AS NUMS FROM Sales
--2.
SELECT empid
,qty
,ROW_NUMBER() OVER(ORDER BY qty)AS NUMS1
,ROW_NUMBER() OVER(ORDER BY qty,EMPID) AS NUMS2
FROM SALES

--3.
SELECT empid
,qty
,MGRID
,ROW_NUMBER() OVER(PARTITION BY MGRID ORDER BY qty,EMPID) AS NUMS2
FROM SALES

--4.用游标计算行号
DECLARE @SalesRN TABLE(empid VARCHAR(10),qty INT,rn INT)
DECLARE @empid VARCHAR(10),@qty INT,@rn INT
BEGIN TRAN
DECLARE rncursor CURSOR FAST_FORWARD FOR
SELECT empid,qty FROM Sales ORDER BY qty,empid
OPEN rncursor
SET @rn=0
FETCH NEXT FROM rncursor INTO @empid,@qty
WHILE @@FETCH_STATUS=0
BEGIN
SET @rn=@rn+1
INSERT INTO @SalesRN(empid,qty,rn) VALUES(@empid,@qty,@rn)
FETCH NEXT FROM rncursor INTO @empid,@qty
END
CLOSE rncursor
DEALLOCATE rncursor
COMMIT TRAN
SELECT * FROM @SalesRN

--5.IDENTITY
SELECT empid,qty,identity(int,1,1) as rn into SalesRN FROM Sales ORDER BY qty,empid
select * from SalesRN

--6.RANK() OVER(ORDER BY ()) DENSE_RANK() OVER (ORDER BY ())
SELECT empid
,qty
,RANK() OVER(ORDER BY qty)AS NUMS1
,ROW_NUMBER() OVER(ORDER BY qty,EMPID) AS NUMS2
FROM SALES

SELECT empid
,qty
,DENSE_RANK() OVER(ORDER BY qty)AS NUMS1
,ROW_NUMBER() OVER(ORDER BY qty,EMPID) AS NUMS2
FROM SALES
Shawn 2010-12-31
  • 打赏
  • 举报
回复
create table tb
(
id int identity(1, 1),
uid int,
fuid int
)
insert into tb(uid, fuid)
select 1, 1
union all
select 1, 2
union all
select 2, 3
union all
select 1, 4
union all
select 3, 5
select * from tb

SELECT
number = DENSE_RANK() OVER(ORDER BY MC DESC),
uid,
MC
FROM (SELECT uid, MC = COUNT(1) FROM tb GROUP BY uid) A
dawugui 2010-12-31
  • 打赏
  • 举报
回复
SELECT uid , COUNT(*) AS MC FROM table group by uid ORDER BY mc DESC
百年树人 2010-12-31
  • 打赏
  • 举报
回复
SELECT COUNT(*) AS MC,
排名=rank() over(order by count(*) desc)
FROM table WHERE uid=变量 ORDER BY COUNT(*) DESC


王向飞 2010-12-31
  • 打赏
  • 举报
回复
给出测试数据和你希望得到的结果
blftest1 2010-12-31
  • 打赏
  • 举报
回复
create table tb
(
id int identity(1, 1),
uid int,
fuid int
)
insert into tb(uid, fuid)
select 1, 1
union all
select 1, 2
union all
select 2, 3
union all
select 1, 4
union all
select 3, 5

SELECT uid , COUNT(*) AS MC FROM tb where uid=变量 group by uid ORDER BY mc DESC
q520525745 2010-12-31
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wwwwgou 的回复:]
SQL code
create table tb
(
id int identity(1, 1),
uid int,
fuid int
)
insert into tb(uid, fuid)
select 1, 1
union all
select 1, 2
union all
select 2, 3
union all
select 1, 4
……
[/Quote]
我只想查一个uid的排名该怎么写 不是全部排名
本书是Inside Microsoft SQL Server 2005系列四本著作中的一本。它详细介绍了T-SQL的内部体系结构,包含了非常全面的编程参考,提供了使用Transact-SQL(T-SQL)的专家级指导,囊括了非常全面的编程参考,揭示了基于集合的查询的强大威力,并包含大量来自专家们的参考和建议。本书适合专业数据库开发者、BI开发者、DBA和以SQL Server作为后台数据库的一般应用程序开发者,读者可以通过书中的最佳实践、高级技巧和代码示例来掌握这门复杂的编程语言,以切合实际的方案来解决复杂的实际问题。   深入理解T-SQL体系结构,充分利用高级T-SQL查询技术。   本书深入介绍了T-SQL的内部体系结构,揭示了基于集合的查询的强大威力,并包含大量来自专家们的参考和建议。通过本书提供的最佳实践和示例代码,数据库开发人员和管理员完全可以掌握这门复杂的编程语言,以切合实际的方案来解决复杂的实际问题。通过本书,你将学习到如何:理解逻辑和物理的查询处理;使用方法论优化查询;在查询中用TOP选项修改数据;用递归逻辑、具体化路径或嵌套集合解决方案查询特殊的数据结构;通过逻辑难题提高你的逻辑能力并掌握查询问题的核心等。   你将学习到如何:   理解逻辑和物理的查询处理;   使用方法论优化查询;   解决关系分区问题;   使用CTE和排名函数简化及优化解决方案;   用各种技术聚合数据,包括附加属性、旋转、直方图和分组因子;   在查询中用TOP选项修改数据;   用递归逻辑、具体化路径或嵌套集合解决方案查询特殊的数据结构;   通过逻辑难题提高你的逻辑能力并掌握查询问题的核心; 内容简介 本书是Inside Microsoft SQL Server 2005系列四本著作中的一本。本书及其续篇——《Microsoft SQL Server 2005技术内幕:T-SQL程序设计》介绍了SQL Server 2005中高级T-SQL查询、查询优化及编程相关的知识。这两本书侧重于解决实践中的常见问题,并讨论了解决这些问题的方法。它们将向你揭示基于集合(set-based)查询的强大威力,并解释为什么它比使用游标的过程化编程(procedural programming)更具优势。同时,它还会教你识别使用基于游标解决方案与基于集合解决方案的优劣。   书中还讲述了其他几种争议较多的构造(camstruct)——如临时表、动态执行、XML和.NET集成——它们在具有强大功能的同时,也具有极大的风险。   本书适合于需要编写或检查T-SQL代码的有经验的T-SQL程序员和数据库专业人员。读者可从中学到大量精湛的技巧,这些技巧会充实您的工具箱和编码技能,并让您顺利地开发出高效的解决方案。 作者简介 Itzik Ben-Gan是Solid Quality Learning的首席导师和创始人。他从1999年开始便一直是SQL Server方面的Microsoft MVP,在世界各地讲授 T-SQL查询、编程和查询优化相关的课程,并提供相关咨询服务。他在SQL Server Magazine和MSDN上发表了多篇文章,并被邀请在许多专题会议上做过报告,包括TechEd、DevWeek、PASS和SQL Server Connections。 目录 序 前言 致谢 引言  本书的组织  系统要求  安装示例数据库  更新  代码示例  本书支持 第1章 逻辑查询处理  逻辑查询处理中的各个阶段   逻辑查询处理阶段简介  Customers/Orders场景下的示例查询  逻辑查询处理步骤详解   步骤1:执行笛卡尔乘积(交叉联接)   步聚2:应用ON筛选器(联接条件)   步骤3:添加外部行(Outer Row)   步骤4:应用WHERE筛选器   步骤5:分组   步骤6:应用CUBE或ROLLUP选项   步骤7:应用HAVING筛选器   步骤8:处理SELECT列表   步骤9:应用DISTINCT子句   步骤10:应用ORDER BY子句   步骤11:应用TOP选项  SQL Server 2005中新的逻辑处理阶段   表运算符   OVER子句   集合操作  结论 第2章 物理查询处理  查询处理期间的数据流  编译   Algebrizer   优化   使用查询计划   更新计划  结论   致谢 第3章 查询优化  本章用到的示例数据  优化方法论   分析实例级的等待   联系等待和队列   确定方案   细化到数据库/文件级别   细化到进程级别   优化索引/查询  查询优化工具   syscacheobjects   清空缓存   动态管理对象   STATISTICS IO   测量查询的运

34,590

社区成员

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

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