gpt4 book ai didi

sql - 多个 ID 的公差范围内的最接近值

转载 作者:行者123 更新时间:2023-11-29 14:30:50 28 4
gpt4 key购买 nike

我正在寻找这样的东西,给定一个表格:

| channelid  | curveid  | xvalue   |
| 1 | 21 | 179.9216 |
| 1 | 21 | 180.4314 |
| 1 | 21 | 180.6528 |
| 1 | 21 | 180.9251 |
| 1 | 21 | 181.1334 |
| 1 | 21 | 181.4417 |
| 2 | 21 | 179.9513 |
| 2 | 21 | 180.1612 |
| 2 | 21 | 180.2022 |
| 2 | 21 | 180.8762 |
| 2 | 21 | 181.1331 |
| 2 | 21 | 181.2842 |
| 1 | 22 | 179.9213 |
| 1 | 22 | 180.4415 |
| 1 | 22 | 180.6226 |
| 1 | 22 | 180.9758 |
| 1 | 22 | 181.1639 |
| 1 | 22 | 181.4212 |
| 2 | 22 | 179.9715 |
| 2 | 22 | 180.1513 |
| 2 | 22 | 180.2326 |
| 2 | 22 | 180.8265 |
| 2 | 22 | 181.1437 |
| 2 | 22 | 181.2442 |

返回最接近为每个唯一 channelid curveid 组合找到的值的 xvalue。

我找到了 thisthis .有了这个,我可以找到最接近的总值。但是我需要帮助扩展它,以便它返回最接近每个唯一组合的值。

SELECT * FROM table 
WHERE xvalue >= ($myvalue - .5) AND xvalue <= ($myvalue + .5)
ORDER by abs(xvalue - $myvalue)

谢谢!

最佳答案

在 Postgres 中执行此操作的最佳方法是使用 distinct on:

SELECT DISTINCT ON (channelid, curveid) t.*
FROM table
ORDER by channelid, curveid, abs(xvalue - $myvalue);

如果您知道对于您想要的所有组合,最接近的值在 $myvalue 的 0.5 以内,那么您可以添加 where 子句。

关于sql - 多个 ID 的公差范围内的最接近值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52136752/

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