ado*_*lot 3 sql-server t-sql sql-server-2008-r2
按百分比范围对记录进行分组的更简单方法是什么。
这是我试图完成的
Select top percents between 50 and 75 * from myTable order by PKI
Run Code Online (Sandbox Code Playgroud)
这是我这样做的方式,但我觉得它云要容易得多
select
top(25) percent
*
from myTable
where id not in (
select
top(25) percent
ID
from myTable
order by PKI
)
order by PKI
Run Code Online (Sandbox Code Playgroud)
这应该是我表的前 50-75% 吗?
有没有更好(更好)的方法来做到这一点。
另一种方法是
WITH CTE
AS (SELECT ID,
PKI,
ROW_NUMBER() OVER ( ORDER BY PKI) AS RN,
COUNT(*) OVER() AS Cnt
FROM myTable)
SELECT ID,
PKI
FROM CTE
WHERE RN BETWEEN 0.5 * Cnt AND 0.75 * Cnt
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用NTILE()
函数:
WITH cte AS
( SELECT id,
pki,
NTILE(4) OVER(ORDER BY pki) AS quartile
FROM myTable
)
SELECT id,
pki
FROM cte
WHERE quartile = 3 ;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1093 次 |
最近记录: |