在另一个表上寻找最接近的值

问题描述

我需要找到一张表与另一张表最接近的值。

例如,我需要通过检查表 Actual_Price 上的最接近值来使用表 New_Price 中的 Product 匹配其价格值

表新_价格

产品 价格
X 2.0
Z 3.0

表实际_价格

Product_Desc 价格
ABC 1.2
EFG 3.4

计划结果:

产品 价格 产品描述
X 2.0 ABG
Z 3.0 EFG

解决方法

嗯。 . .我认为相关子查询可以满足您的需求:

select np.*,(select ap.product_desc
        from actual_price ap
        order by abs(ap.price - np.price)
        limit 1
       ) as product_desc
from new_price np;
,

您可以通过价格之间的最小绝对增量交叉连接或左连接带有窗口函数订单的两个价格表。这可能会给:

WITH old_near AS
  (SELECT DISTINCT Actual_Price.Product_Desc,FIRST_VALUE(New_Price.Product) OVER (PARTITION BY Actual_Price.Product_Desc ORDER BY ABS(New_Price.Price - Actual_Price.Price)) new_product
     FROM Actual_Price LEFT JOIN New_Price ON TRUE)
SELECT New_Price.*,old_near.Product_Desc
  FROM New_Price LEFT JOIN old_near ON old_near.new_product = New_Price.Product;

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...