gpt4 book ai didi

sql - 选择差异最小的行

转载 作者:行者123 更新时间:2023-12-04 20:21:27 27 4
gpt4 key购买 nike

我对 SQL 非常擅长,但我想不出解决这个“相似”数据分析问题的好方法:

给定一个包含一组整数的表,我需要将每个整数与第二个表中最相似(最小绝对差)的整数相匹配。通常我会进行笛卡尔连接并按数字差异排序,但我只需要为每个表中的每一行获取一个配对,因此任何一个表中的值都不能使用两次。

知道如何做到这一点吗?

编辑: 示例:

表_A

34
57
108
219
380
5000

TABLE_B
4000
200
400
99
40
33
34
4600

配对将是 table_a 中的一行和 table_b 中最接近的行:

结果
34,34
57,40
108,99
219,200
380,400
5000,4600

所以任何一个表中的行都不会出现两次。

编辑:更多说明:我正在尝试解决这个问题,其中给定 table_a 中的 1 行,我们找到 table_b 中最接近的 1 行。那变成一对并被移除。然后从 table_a 中取出下一行并重复。因此,我们正在尝试为每一行找到最佳匹配并优化该配对,而不是尝试优化总差异。

最佳答案

假设

where given 1 row from table_a, we find the 1 row from table_b that's closest


select
*
from
TABLE_A a
cross apply
(select top 1 Number from TABLE_B b order by abs(b.Number - a.Number)) b2

这也假设 b 中的行可以重复:尝试一下,看看它是否符合您的要求。但是,这应该适合您的样本数据,因此它可以回答您的问题......

关于sql - 选择差异最小的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6063190/

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