查询 sql server 2005 以获得不同组的第 95 个百分位

Posted

技术标签:

【中文标题】查询 sql server 2005 以获得不同组的第 95 个百分位【英文标题】:query for sql server 2005 for getting the 95th percentile of different groups 【发布时间】:2012-06-05 10:31:15 【问题描述】:

我有一张像下面描述的虚拟表一样的表

日期 ||服务器 ||计数


1200 ||乙 || 123

1200 || C || 124

1200 ||乙 || 125

1300 ||乙 || 126

1300 || C || 127

1300 ||乙 || 128

1300 || C || 129

我需要编写一个查询来创建一个表,以便获得按日期和服务器分组的 Count 的 95 个百分位。

我对Sql没有太多经验,看了google搜索结果,浏览了无数链接,看到很多子查询使用后,我有点害怕。没有人能给出简单的查询。我们不能直接使用直接查询得到如下结果吗?

日期 ||服务器 ||计数


1200 ||乙 || 123

1200 || C || 124

1300 ||乙 || 126

1300 || C || 127

有人可以提供可以使用的确切查询吗?

感谢您的帮助!

【问题讨论】:

【参考方案1】:
SELECT  *
FROM    (
        SELECT  *, NTILE(20) OVER (PARTITION BY [date], [server] ORDER BY [count]) AS t
        FROM    mytable
        ) q
WHERE   t < 20

【讨论】:

以上是关于查询 sql server 2005 以获得不同组的第 95 个百分位的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL Server 2005/2008 中清除查询执行统计信息

如何将 SQL Server 2005 查询导出到 CSV

如何避免从 C# 构建的 Sql Server 2005 参数化查询变慢

sql server 2005多表连接查询,去除部分列不查询

使用 SQL Server 2005 通过 LDAP 访问 Active Directory 角色成员资格

sql如何获得某个数据库里面的表的字段名,字段类型,字段长度(sql server2005)