我在SQL中有以下查询(OracleDB11gXE)
仅用于上下文:此查询搜索每个月具有最大功率因数的传感器,范围为0.90至0.99 )
with abc as (select extract(month from peak_time) as Month,
max(total_power_factor) as Max_Power_Factor
from sensors group by extract(month from peak_time) order by Month DESC)
select abc.Month, Max_Power_Factor, meter_id as "Made by"
from abc join sensors
on sensors.total_power_factor = abc.Max_Power_Factor
where Max_Power_Factor between 0.90 and 0.99
order by Max_Power_Factor;SQL向我显示正确的结果,每个月只有一行,没有重复;例如:
Month Max_Power_Factor Scored by
6 0.981046427565 b492b271760a
1 0.945921825336 db71ffead179
3 0.943302142482 a9c471b03587
8 0.9383185638 410bd58c8396
7 0.930911694091 fe5954a46888
5 0.912872055549 ee3c8ec29155我的问题是试图在Neo4j上复制相同的查询(3.2.1CE,在Windows10上):我不知道如何准确地分组数据以获得相同的结果。(如您所见,我正在使用APOC管理日期)
match(a:Sensor) with a, a.peak_time as peak_time
where (a.total_power_factor > 0.90 and a.total_power_factor <0.99 )
RETURN distinct a.meterid, max(peak_time),apoc.date.format(peak_time,'s','MM') as month
order by month desc这些是我的Cypher结果,正如您所看到的,每个月都有多行。
Month Max_Power_Factor Scored by
06 0.981046427565 b492b271760a
01 0.945921825336 db71ffead179
03 0.943302142482 a9c471b03587
08 0.9383185638 410bd58c8396
08 0.93451098613 dfd6b67cc6d6
07 0.930911694091 fe5954a46888
02 0.916440282713 649956b34e87
05 0.912872055549 ee3c8ec29155
08 0.907059974935 a3e8df8a0ba8因此,我的问题是:如何将数据分组,以便与Oracle?具有相同的输出(当然,如果可能的话)
提前谢谢你的帮助。
发布于 2017-08-08 12:38:06
您显示的输出中的字段与查询不相对应(例如,“得分”到底是什么?)但是,在Neo4j中聚合的诀窍是理解聚合键是隐式的。
所以如果你有
RETURN distinct a.meterid, max(peak_time),apoc.date.format(peak_time,'s','MM') as month您正在meterid和月份上进行分组。
如果您只想按月分组,则应该是
RETURN max(peak_time),apoc.date.format(peak_time,'s','MM') as month希望这能帮上忙!
你好,汤姆
https://stackoverflow.com/questions/45567183
复制相似问题