我需要一种将结果放入指定的#组中的方法。
我尝试使用ntile()
函数,我认为该函数会使用,但无法正常工作:
WITH CTE AS (
SELECT 1 as Number
UNION ALL
SELECT Number+1
FROM CTE
WHERE Number < 100
)
SELECT *, ntile(80) over (order by number desc) as 'test'
FROM CTE
为获得预期结果,四分位数列应每2个条目输出一个数字(如NTILE(80)
中所指定),但是它可以是2、4、10或我指定的任何数字。
也许NTILE()
不是正确的功能,但是有一个功能可以满足我的需求吗?
因此,如果我指定3,则结果应每3条记录分组。如果我指定15,则结果应每15条记录分组,然后移至下一组。
希望我很清楚
答案 0 :(得分:1)
...应该每2个条目输出一个数字...
否,您有100个条目,并且想要将它们分为80组。您将获得一些具有1个条目的组,而其他具有2个条目的组。
阅读NTILE()
的定义。如果您希望包含2个条目的组,可以将其分为50
个组,如下所示:
WITH recursive
CTE AS (
SELECT 1 as Number
UNION ALL
SELECT Number + 1
FROM CTE
WHERE Number < 100
)
SELECT *,
ntile(50) -- changed here
over (order by number desc) as test
FROM CTE
您没有说您正在使用什么数据库引擎,所以我假设使用PostgreSQL。
答案 1 :(得分:0)
我认为您只需要模运算符:
25000.0