gpt4 book ai didi

sql-server - SQL Server : Count how big a column value is compared to the others

转载 作者:行者123 更新时间:2023-12-04 07:02:12 26 4
gpt4 key购买 nike

我有填充浮点值的表格列,例如:

   id-Values
1- 0.19230769230769232
2- 8.4848484848484854E
3- 0.10823529411764705
4- 0.05459770114942529
...

我想知道:是否有一个 SQL 函数可以让我返回所选行位置与其他行位置的百分比?

例如:
我想知道是否有一种简单的方法可以检查第 4 行是否在 TOP 10% 中.或者如果第 2 行在 LAST 10% 中(按值排序)。

我知道不可能做 SELECT TOP 10%SELECT LAST 10%使用 SQL Server 但这只是举例说明我想要做什么。

@解决方案:
declare @a int
declare @b int
declare @values float

select @values = values from test where id <= 2

select @a = count(*) from test where values <= @values
select @b = count(*) from test

select cast( cast(@a as float) / cast(@b as float) as float) * 100 as percentage

最佳答案

好的,这应该是 SQL 2000 兼容版本。基于与我之前的答案相同的表结构:

DECLARE
@Id int
,@Data float

SET @Id = 3

SELECT @Data = Data
from Test
where Id = @Id

SELECT (sum(case when Data < @Data then 1.0 else 0.0 end) + 1) / count(*)
from Test

假设在 Id 上有索引,现在只有 1 次表扫描。在重复值的情况下,这将根据第一次出现选择位置。搞乱那个+1;没有它,第一个值将为您提供 0%,有了它,四行您将得到 25%——那么什么适合您的应用程序?此外,如果表为空,您将得到除以零的错误,因此您需要根据您的应用程序适本地处理它。

关于sql-server - SQL Server : Count how big a column value is compared to the others,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1674239/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com