sql server记录几个分页取top n数据的写法

数据表:BUS_VisitorStatics

1、开窗函数实现:

SELECT  *

FROM    ( SELECT    * ,

ROW_NUMBER() OVER ( PARTITION BY visitorDate ORDER BY Count DESC ) AS ‘num‘

FROM      BUS_VisitorStatics

) AS tb1

WHERE   tb1.num <= 10

2、Linq实现:

DbContext dd = new SZAdminEntities();

list = dd.Set<BUS_VisitorStatics>().OrderByDescending(p => p.Count).ToList();

var result = from n in list

group n by n.VisitorDate

into g

orderby g.Key

select new

{

date = g.Key,

dateList = g.OrderByDescending(p => p.Count).Take(10),

};

var wordlist = new List<BUS_VisitorStatics>();

foreach (var item in result)

{

if (item.dateList.Count() > 0)

{

foreach (var o in item.dateList)

{

var mod = new BUS_VisitorStatics();

mod.VisitorDate = item.date;

mod.Count = o.Count;

mod.Keyword = o.Keyword;

wordlist.Add(mod);

}

}

}

return wordlist;

3、普通SQL实现:

SELECT  *

FROM    BUS_VisitorStatics AS a

WHERE   ( SELECT    COUNT(*)

FROM      BUS_VisitorStatics AS b

WHERE     a.VisitorDate = b.VisitorDate

AND a.Count < b.Count

) < 10

ORDER BY a.VisitorDate ,a.Count DESC

时间: 2024-10-13 20:08:02

sql server记录几个分页取top n数据的写法的相关文章

Sql Server 2012 的新分页方法分析(offset and fetch) - 转载

最近在分析 Sql Server 2012 中 offset and fetch 的新特性,发现 offset and fetch 无论语法的简洁还是功能的强大,都是相当相当不错的 其中 offset and fetch 最重要的新特性是 用来 分页,既然要分析 分页,就肯定要和之前的分页方式来比较了,特别是 Row_Number() 了,在比较过程中,发现了蛮多,不过最重要的,通过比较本质,得出了优劣,也和大家一起分享下. 准备工作,建立测试表:Article_Detail,主要是用来存放一些

SQL SERVER实现基本的分页功能

SQL SERVER实现基本的分页功能 利用NOT IN 和 SELECT TOP来分页 use WH_WorkshopInforSys --建立临时表 select IDENTITY(int,1,1) as id,* into mytable from dbo.PnlBaobiao -- 分页查询 select top 10 * from mytable where id not in (select top 40 id from mytable order by id) order by i

atitit。mssql sql server 转换mysql 及 分页sql ast的搭建

atitit.mssql sql server 转换mysql  及 分页sql ast的搭建 1. 主要的的转换::函数的转换,分页的转换 1 2. 思路::mssql sql >>ast>>mysql 1 3. sql主要的如下::: 1 4. Mssql2MysqlConvertor (proj:wechatAdm4propt 2 1. 主要的的转换::函数的转换,分页的转换 2. 思路::mssql sql >>ast>>mysql 3. sql主要

SQL Server 记录(更新中...)

sys.databases 显示所有数据库信息 sys.tables 显示当前数据库所有的表的信息 Go 向 SQL Server 实用工具发出一批 Transact-SQL 语句已结束的信号,Go本身不是T-SQL语句 sq_addrole 等等 SQL Server 系统存储过程以字符 sp_ 开头. EXEC或EXECUTE 执行 Transact-SQL 批处理中的命令字符串.字符串或执行下列模块之一:系统存储过程.用户定义存储过程.CLR 存储过程.标量值用户定义函数或扩展存储过程.

SQL Server 2012 新的分页函数 OFFSET &amp; FETCH NEXT

DECLARE @page INT, @size INT;select @page = 300, @size = 10 SELECT *FROM gpcomp1.GPCUSTWHERE company like 'a%'ORDER BY CUSTNOOFFSET (@page -1) * @size ROWSFETCH NEXT @size ROWS ONLY; SQL Server 2012 新的分页函数 OFFSET & FETCH NEXT,布布扣,bubuko.com

SQL Server 2008 各种DateTime的取值范围

原文:SQL Server 2008 各种DateTime的取值范围 SQL Server 2008除了DateTime和SmallDateTime之外,又新增了四种时间类型,分别为:date,time,datetime2和datetimeoffset. 各时间类型范围.精度一览表: 数据类型 时间范围 精度 datetime 1753-01-01到9999-12-31 00:00:00 到 23:59:59.997 3.33毫秒 smalldatetime 1900-01-01 到 2079-

SQL SERVER 查询第20行到30之间的数据

SQL SERVER 查询第20行到30之间的数据 1.先查询前20行的ID,后查询除去20条记录的前10条记录 SELECT TOP 10 * FROM tbBank WHERE BankID NOT IN(SELECT TOP 20 BankID FROM tbBank ORDER BY BankID ASC) 2.先查询前20行记录最大的ID,后查询大于该值的前10条记录 SELECT TOP 10 * FROM tbBank WHERE BankID>(SELECT MAX(BankID

Querying Microsoft SQL Server 2012 读书笔记:查询和管理XML数据 1 -使用FOR XML返回XML结果集

原文:Querying Microsoft SQL Server 2012 读书笔记:查询和管理XML数据 1 -使用FOR XML返回XML结果集 XML 介绍 <CustomersOrders> <Customer custid="1" companyname="Customer NRZBB"> <Order orderid="10692" orderdate="2007-10-03T00:00:00&

(转)SQL Server 2008怎样编辑200行以上的数据

刚换SQL Server2008 不久,感觉运行速度.编辑提示都比05版的提升不少,但是在维护考试系统中遇到一个05中没有的问题:05中有“打开表”可以编辑所有数据行,到了08变成了“打开前1000行”和“编辑前200行”:考试系统中的数据怎么也有几千行,怎么编辑以后的数据?                       方法一:修改设置         进入"工具"---选项---SQL Server对象资源管理器---命令---“编辑前<n>行”,值改为1000(自定).