怎样求前50笔数据中符合要求的个数

jthkl 2018-01-22 11:58:47
有表格: 用户号,单号,时间,金额,现在想求每个用户每天前50笔里,金额大于10元的数据有多少(包括发生的金额和笔数)?谢谢。
...全文
325 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
听雨停了 2018-01-23
  • 打赏
  • 举报
回复

 --sql2005以上版本可以使用
 ;WITH cte AS (
 SELECT *,ROW_NUMBER() OVER(PARTITION BY 用户号,CAST(时间 as date) order by 时间) as rn 
 FROM 表名称	--这里的表名称替换成你的表名称
 )
 SELECT 用户名,CAST(时间 as date) as 时间,count(单号) as 总单号数,sum(金额) as 总金额 
 FROM cte 
 WHERE rn<=50
 GROUP BY 用户名,CAST(时间 as date)
听雨停了 2018-01-23
  • 打赏
  • 举报
回复
引用 3 楼 qq_37170555 的回复:
少了个 and 金额>10

 --sql2005以上版本可以使用
 ;WITH cte AS (
 SELECT *,ROW_NUMBER() OVER(PARTITION BY 用户号,CAST(时间 as date) order by 时间) as rn 
 FROM 表名称	--这里的表名称替换成你的表名称
 )
 SELECT 用户名,CAST(时间 as date) as 时间,count(单号) as 总单号数,sum(金额) as 总金额 
 FROM cte 
 WHERE rn<=50 AND 金额>10
 GROUP BY 用户名,CAST(时间 as date)
吉普赛的歌 版主 2018-01-22
  • 打赏
  • 举报
回复
USE tempdb
GO
IF OBJECT_ID('t') IS NOT NULL DROP TABLE t
GO
CREATE TABLE t(用户号 int,单号 INT,时间 DATETIME, 金额 int)
INSERT INTO t VALUES (1,1,'2018-01-21 08:00',11)
INSERT INTO t VALUES (1,2,'2018-01-21 09:00',12)
INSERT INTO t VALUES (1,3,'2018-01-21 10:00',20)
INSERT INTO t VALUES (2,4,'2018-01-21 11:00',3)
INSERT INTO t VALUES (2,5,'2018-01-21 12:00',15)
INSERT INTO t VALUES (2,6,'2018-01-21 13:00',5)
INSERT INTO t VALUES (3,7,'2018-01-22 08:00',30)

;WITH cte AS (
	SELECT ROW_NUMBER() OVER (PARTITION BY 用户号,convert(CHAR(10),时间,120) order by 时间 desc) as rid
	,*
	FROM t
	WHERE 金额>10	
)
SELECT 
	用户号
	,convert(CHAR(10),时间,120) as 时间
	,COUNT(1) AS 笔数
	,SUM(金额) AS 金额
FROM cte
WHERE rid<=50
GROUP BY 用户号,convert(CHAR(10),时间,120)
/*
用户号	时间	    笔数	金额
1	    2018-01-21	3	    43
2	    2018-01-21	1	    15
3	    2018-01-22	1	    30
*/
小野马1209 2018-01-22
  • 打赏
  • 举报
回复
看下这个是不是你要的结果 先按用户号和单据日期分组,再将每天的数据分组排序,最后取序号小于等于50的就是你要的数据了
SELECT * FROM (
select 用户号,单号,时间,金额,
ROW_NUMBER() OVER(PARTITION BY 用户号,单据日期,Order by 时间) AS NO
From 表) AS A
WHERE A.NO<=50

34,576

社区成员

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

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