【发布时间】:2021-06-22 14:02:00
【问题描述】:
我有一个简单的表格,其中包含当天的高低值以及最后观察到的值。
我想查询表并返回最后一个值,但前提是它在高或低的一定百分比内。另外,我希望根据当天高低之间的范围(或差异)调整该百分比。
例如,假设我有以下内容:
| Date | High | Low | Last |
|---|---|---|---|
| 2021-01-01 | 90 | 10 | 30 |
| 2021-01-02 | 90 | 10 | 15 |
| 2021-01-03 | 90 | 10 | 90 |
| 2021-01-04 | 20 | 10 | 12 |
| 2021-01-05 | 20 | 10 | 18 |
我想根据高低范围计算一个目标,这样我就可以返回最后一个值,当它们在大范围之间的差异的 10% 以内时,比如 90-10 = 80,所以在 8 以内。所以返回 >=82 或 的任何 Last 值
对于较小的范围,例如 20 - 10 =10,我想返回在 20% 或 25% 内的 Last 值。
所以我想我需要使用case语句来设置基于范围diff的乘数,然后执行(高-低),然后将diff乘以case语句中的乘数,然后确定是否最后一个小于低+目标或大于高-目标。
但我不知道如何构造该查询,如果它需要 case 语句和子选择,或者内部连接?
【问题讨论】:
-
请分享您想要的输出。
-
你使用的是哪个数据库?
-
mysql 目前是 5.6 但计划很快升级到 8.0。
-
从上表中,所需的输出将返回 4 条记录,除了 Last value = 30 的行。
标签: mysql sql conditional-statements case