22,209
社区成员
发帖
与我相关
我的任务
分享
WITH T AS
(
SELECT Rn=row_number()OVER(ORDER BY count(1) DESC),
A.name,count(b.pkid) cnt
FROM [User] A
left JOIN [message] B
ON A.pkid=B.pkid
and B.CreateTime BETWEEN @bt AND @et
GROUP BY A.name
)
SELECT *
FROM T
WHERE (Rn-1)/@PageSize+1=@PageCurrent
WITH T AS
(
SELECT Rn=row_number()OVER(ORDER BY count(1) DESC),
A.name,count(1) cnt
FROM [User] A
left JOIN [message] B
ON A.pkid=B.userid--B 表怎么还用pkid ,应该用userid
and B.CreateTime BETWEEN @bt AND @et
GROUP BY A.name
)
SELECT *
FROM T
WHERE (Rn-1)/@PageSize+1=@PageCurrent
WITH T AS
(
SELECT Rn=row_number()OVER(ORDER BY count(1) DESC),
A.name,count(1) cnt
FROM [User] A
left JOIN [message] B
ON A.pkid=B.pkid
and B.CreateTime BETWEEN @bt AND @et
GROUP BY A.name
)
SELECT *
FROM T
WHERE (Rn-1)/@PageSize+1=@PageCurrent
--有 user,message两个表
--结果如下
--user
--pkid int
--name 应该还有个字段
--message
--pkid int
--userid int
--Titles nvarchar(50)
--CreateTime datetime
--要写个 存储过程,输入起始时间和结束时间,统计出每个user在这个时间段的 message 数量 并按数量分页排序
IF OBJECT_ID('[p_test]') IS NOT NULL
DROP PROC [p_test]
GO
CREATE PROC [p_test]
@bt datetime,
@et datetime,
@PageCurrent int=1,--显示第几页
@PageSize int=10 --每页大小
AS
WITH T AS
(
SELECT Rn=row_number()OVER(ORDER BY count(1) DESC),
A.name,count(1) cnt
FROM [User] A
JOIN [message] B
ON A.pkid=B.pkid
WHERE B.CreateTime BETWEEN @bt AND @et
GROUP BY A.name
)
SELECT *
FROM T
WHERE (Rn-1)/@PageSize+1=@PageCurrent
GO
declare @begintime datetime, @endtime datetime,@pageCurrent int,@pageSize int
set @pageCurrent =1,--显示第几页
set @pageSize =10 --每页大小
;with t as
(
select count(*) as num ,u.username from user u,message m
where u.pid=m.userid
and CreateTime between @begintime and @endtime
group by u.username
)
,b
as
(
select id=row_number() over(order by num),t.* from t
)
select * from b where (is-1)/@pageSize+1=@pageCurrent
declare @begintime datetime, @endtime datetime
;with t as
(
select count(*) as num ,u.username from user u,message m
where u.pid=m.userid
and CreateTime between @begintime and @endtime
group by u.username
)
,b
as
(
select id=row_number() over(order by num),t.* from t
)
select * from b where id between 0 and 10
--有 user,message两个表
--结果如下
--user
--pkid int
--name 应该还有个字段
--message
--pkid int
--userid int
--Titles nvarchar(50)
--CreateTime datetime
--要写个 存储过程,输入起始时间和结束时间,统计出每个user在这个时间段的 message 数量 并按数量分页排序
IF OBJECT_ID('[p_test]') IS NOT NULL
DROP PROC [p_test]
GO
CREATE PROC [p_test]
@bt datetime,
@et datetime,
@PageCurrent int=1,--显示第几页
@PageSize int=10 --每页大小
AS
WITH T AS
(
SELECT Rn=row_number()OVER(ORDER BY count(1) DESC),
A.name,count(1) cnt
FROM [User] A
JOIN [message] B
ON A.pkid=B.pkid
GROUP BY A.name
)
SELECT *
FROM T
WHERE (Rn-1)/@PageSize+1=@PageCurrent
GO