arrays - 使用 WHERE 条件时,Postgres 查询以双精度 [] 打乱值
问题描述
我有一个观点,我正在查询查询根据包含的条件提供混合结果的位置。该表检索股票代码、收盘价 (cc)、EMA20 和 EMA50。close、EMA20 和 EMA50 是双精度数组,其中第一个索引处的值对应于最近的时间值。
没有任何条件:
收盘价数组存储为
[186.17, 185.94, 181.84, 178.94, 176.47]
EMA20 数组存储为
{177.781517686655,176.898519548408,175.94678476403,175.326446318138,174.946072246363}
EMA50 数组存储为
{173.328052542577,172.803891421866,172.267723724799,171.877018570709,171.588733614412}
使用以下查询时,数组的值会被打乱,并提供如果计算了正确的数组值则不应返回的结果。
SELECT ticker, exchange, cc, EMA20, EMA50
FROM symbolsview
WHERE
exchange IN('NYSE', 'NASDAQ', 'AMEX')
AND (EMA20[1] > EMA50[1])
AND ((cc[1] <= EMA50[1]) OR (ll[1] <= EMA50[1]))
AND (cc[2] >= EMA50[2])
当我运行此查询时,相同符号的值是:
- 关:
{176.47,178.94,186.17,185.94,181.84}
- EMA20:
{174.946072246363,175.326446318138,177.781517686655,176.898519548408,175.94678476403}
- EMA50:
{171.588733614412,171.877018570709,173.328052542577,172.803891421866,172.267723724799}
由于某种原因,这些列的值已被移动。此外,当我添加另一个条件 'AND ticker = 'XXX' 其中 XXX 是股票代码值时,在查询结果中没有显示此附加条件的情况下,不会显示任何结果。如果我在没有任何条件的情况下查询视图,则数组将返回正确顺序的值。
有一个表包含 JSON[] 列中的值。存储的视图从 JSON[] 创建 close、EMA20 和 EMA50 双精度。视图提取值并执行 array_agg。请参阅下面的代码。
SELECT ticker,
array_agg(obj->>'EMA20')::float[] as EMA20,
array_agg(obj->>'EMA50')::float[] as EMA50,
array_agg(obj->>'low')::float[] as ll,
array_agg(obj->>'close')::float[] as cc
FROM symbols, jsonb_array_elements(symbols.last5stats) obj
任何有关为什么要改组数组的见解都会有所帮助。
解决方案
推荐阅读
- python-3.x - 字典不会得到更新
- ios - VNRecognizeTextRequest 无法识别丹麦语“da-DK”
- javascript - Twilio JS - Client.getChannelBySid 引发错误:未找到
- javascript - 附加属性时对象变为未定义
- wxpython - 适用于 Python3.7 CentOS 7.x 的机器人框架安装
- sql - SQL 引导函数 SQL Netezza
- r - 如何替换 RStudio 中特定条件的 NA 值?
- entity-framework - 实体框架 - 每个不同的字符串属性对于其他属性只有一个可能的“真”值
- mongodb - 尝试使用 docker 运行 mongo 命令时无法连接到服务器 127.0.0.1:27017
- opengl - 最大化 glsl 的精度