gpt4 book ai didi

sql-server - 对行进行分组以最小化偏差

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

我有一个这样的员工工资表,其中包含他们的 EmpID 和他们的工资。

  EmpId   | Wages
================
101 | 1280
102 | 1600
103 | 1400
104 | 1401
105 | 1430
106 | 1300

我需要在SQL Server中写一个Stored Procedure,将Employees按照他们的工资进行分组,使得相似的工薪族在一组中,并且内部的偏差该组尽可能少。

没有提及其他条件或规则。

输出应该是这样的

  EmpId   | Wages | Group
=======================
101 | 1280 | 1
106 | 1300 | 1
103 | 1400 | 2
104 | 1401 | 2
105 | 1430 | 2
102 | 1600 | 3

最佳答案

您可以使用如下查询:

SELECT EmpId, Wages, 
DENSE_RANK() OVER (ORDER BY CAST(Wages - t.min_wage AS INT) / 100) AS grp
FROM mytable
CROSS JOIN (SELECT MIN(Wages) AS min_wage FROM mytable) AS t

查询计算每个工资与最低工资的距离,然后使用整数除法除以100,以便将记录放入切片中。因此,所有偏离最低工资 0 - 99 的记录都放在第一个切片中。第二个切片包含与最低工资等差 100 - 199 的记录。

关于sql-server - 对行进行分组以最小化偏差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39363424/

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