gpt4 book ai didi

SQL:按 1 到 10 的比例排列数字

转载 作者:搜寻专家 更新时间:2023-10-30 20:17:54 28 4
gpt4 key购买 nike

我在 SQL Server 2008 数据库中有一个表,其中有一个数字列,我想按 1 到 10 的比例排列。

这是一个示例,其中列 (Scale) 是我想用 SQL 完成的内容

Name    Count   (Scale)
----------------------
A 19 2
B 1 1
C 25 3
D 100 10
E 29 3
F 60 7

在我上面的示例中,最小和最大计数是 1 和 100(这可能每天都不同)。

我想得到每条记录所属的编号。

1 = 0-9
2 = 10-19
3 = 20-29 and so on...

它必须是动态的,因为这些数据每天都在变化,所以我不能使用带有静态数字的 WHERE 子句,如下所示:WHEN Count Between 0 and 10...

最佳答案

试试这个,尽管从技术上讲,值 100 不在 90-99 范围内,因此可能应该归类为 11,因此为什么值 60 的等级是 6 而不是你的 7:

SQL Fiddle

MS SQL Server 2008 架构设置:

查询 1:

create table #scale
(
Name Varchar(10),
[Count] INT
)

INSERT INTO #scale
VALUES
('A', 19),
('B', 1),
('C', 25),
('D', 100),
('E', 29),
('F', 60)


SELECT name, [COUNT],
CEILING([COUNT] * 10.0 / (SELECT MAX([Count]) - MIN([Count]) + 1 FROM #Scale)) AS [Scale]
FROM #scale

Results :

| NAME | COUNT | SCALE |
|------|-------|-------|
| A | 19 | 2 |
| B | 1 | 1 |
| C | 25 | 3 |
| D | 100 | 10 |
| E | 29 | 3 |
| F | 60 | 6 |

当 60 变成 7,所以 100 变成 11 时,这会得到你的答案:

SELECT name, [COUNT],  
CEILING([COUNT] * 10.0 / (SELECT MAX([Count]) - MIN([Count]) FROM #Scale)) AS [Scale]
FROM #scale

关于SQL:按 1 到 10 的比例排列数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27169561/

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