Pat*_*ick 1 sql t-sql sql-server
我在SQL Server中有一个表,包含两列,用于跟踪以特定间隔登录系统的用户数.第一列是Time15,它是四舍五入到最近的15分钟间隔(日期时间)的时间.第二列是UserCount,它是在15分钟间隔内登录系统的用户数.
我需要一个查询,它会显示每天登录的用户峰值数.因此,如果在2009年1月1日下午1点系统达到了100个用户的峰值,我需要输出看起来像:
1/1/09 - 100
1/2/09 - 94
1/3/09 - 98
等......
知道T-SQL将要实现的目标吗?谢谢!
试试这个:
SELECT YEAR(Time15), MONTH(Time15), DAY(Time15), MAX(UserCount)
FROM Table
GROUP BY YEAR(Time15), MONTH(Time15), DAY(Time15)
Run Code Online (Sandbox Code Playgroud)
我喜欢Russ的方法来摆脱时间部分 - 如果你有SQL Server 2005+,你可以使用这种方法来保持峰值发生的时间:
WITH cte AS
(
SELECT Time15, UserCount, ROW_NUMBER() OVER (PARTITION BY DATEADD(dd, DATEDIFF(d, 0, Time15), 0) ORDER BY UserCount DESC) AS RowNumber
FROM <Table>
)
SELECT Time15, UserCount
FROM cte
WHERE RowNumber = 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
316 次 |
| 最近记录: |