SQL的统计该如何使用呢?比较复杂~~~

lm1473 2015-03-26 10:22:11
表名PrtLog,字段为:Fnum,Fuser,Fdata,如下图

图中只列出某一天的一些数据

如何用SQL语句来统计:
1、某一个月Fnum总和最大的前N个用户(Fuser)并列出来?
2、某一个月每天的Fnum总和,显示出来?

...全文
83 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lm1473 2015-03-26
  • 打赏
  • 举报
回复
厉害~~~~ 佩服的五体投地啊~~~
唐诗三百首 2015-03-26
  • 打赏
  • 举报
回复

-- 1、某一个月Fnum总和最大的前N个用户(Fuser)并列出来?
select top [N] Fuser,sum(Fnum) 'Fnum'
 from PrtLog
 where Fdata between '[月初日期]' and '[月末日期]'
 group by Fuser
 order by sum(Fnum) desc

-- 2、某一个月每天的Fnum总和,显示出来?
select convert(varchar,Fdata,23) 'Fdata',sum(Fnum) 'Fnum'
 from PrtLog
 where Fdata between '[月初日期]' and '[月末日期]'
 group by convert(varchar,Fdata,23)
jamesrggg 2015-03-26
  • 打赏
  • 举报
回复
Declare @TmpData Table(
	FNum Int,
	FUser NVarchar(10),
	FDate DateTime)

Declare @BeginDate DateTime,@EndDate DateTime

--1.某一个月Fnum总和最大的前N个用户(Fuser)并列出来
;With T_Max As(
	Select ROW_NUMBER() Over(Order By SUM(FNum)) AS RID,FUser,SUM(FNum) As TotalNum
		From @TmpData
		Where FDate Between @BeginDate And @EndDate
		Group By FUser)
Select * From T_Max Where RID <= 10

--2.某一个月每天的Fnum总和,显示出来?
Select CONVERT(Nvarchar(10),FDate,120) As Dates,SUM(FNum) As TotalNum
	From @TmpData
	Where FDate Between @BeginDate And @EndDate
	Group By CONVERT(Nvarchar(10),FDate,120)

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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