1

我最近开始研究来自关系背景(Oracle RDBMS)的 OrientDB,我正在努力查询我加载到 OrientDB 中的一些数据。

我有 2 节课:

CREATE CLASS prices
CREATE PROPERTY prices.price_created_datetime DATETIME
CREATE PROPERTY prices.price_value DOUBLE

CREATE CLASS stocks
CREATE PROPERTY stocks.stock_symbol STRING
CREATE PROPERTY stocks.stock_prices LINKLIST prices

我通过首先在“股票”类上运行 UPSERT 来加载一些数据,然后在一天内多次添加价格:

UPDATE stocks ADD stock_prices = {json string of class:prices}

我想做的是获取所有stocks.stock_symbol 值并在过去24 小时内聚合(使用平均值)prices.price_value(因此过滤prices.price_created_datetime)。

我正在使用基于网络的工作室,并且尝试了几种不同的方法,但是当我的大多数查询都没有返回任何内容时,我很难理解这个概念。我在 Java 应用程序中嵌入了运行 OrientDB 2.1.9。

任何帮助,将不胜感激。

4

1 回答 1

2

我用这种结构(就像你的一样)试过你的情况:

班级:stocks

财产:stocks.stock_symbol STRING

财产:stocks.stock_prices LINKLIST prices

班级:prices

财产:prices.price_created_datetime DATETIME

财产:prices.price_value DOUBLE

这是数据:

在此处输入图像描述

在此处输入图像描述

要查找过去 24 小时内具有平均相对价格的所有股票代码,我使用了以下查询:

select stock_symbol, $prices.averageLast24 as averagePricesLast24 from stocks 
let $prices = (select avg(price_value) as averageLast24 from (select price_value, price_created_datetime.asDatetime() as dataLast24 from prices) where eval('(sysdate() - dataLast24) / 3600000') < 24 and dataLast24 in $parent.current.stock_prices.price_created_datetime) 
unwind averagePricesLast24

这是输出:

----+------+------------+-------------------
#   |@CLASS|stock_symbol|averagePricesLast24
----+------+------------+-------------------
0   |null  |bbb         |492345.5
1   |null  |ccc         |320167.0
----+------+------------+-------------------

希望能帮助到你

于 2016-01-27T03:44:23.033 回答