如何在代表当天每小时的列中返回客户小时数据的汇总总和?这个问题可能有点模糊,所以我会设置上下文...
我有一组客户数据,每个客户都有一个电表,每小时读一次电表(想想你家的电表)。客户1-X被分配到组1,客户YZ被分配到组2等。我在Neo4j中设置了时间树(年 - >月 - > - 日 - >小时)和小时计读取是一个单独的节点,具有适当小时的边缘(以及客户的边缘)。我需要返回一份报告,该报告总结了每个组中所有客户的所有小时计量读数(按组),但每小时需要是一个单独的列,如下所示:
GroupName Date H1Sum H2Sum H3Sum ... H24Sum
以下查询返回报告的正确格式,但仅返回第一个小时。如何创建另外23列代表2-24小时的数据?
MATCH (Group:LMRGroup)<-[:PART_OF_GROUP]-(SubGroup:SubLMRGroup)<-[:PART_OF_GROUP]-(c:Customer)-[:HAS_METER_READ]->(HrlyMR:HourlyMeterRead)-[:METER_READ]->(hr:Hour
{hour:1})<-[:HAS_HOUR]-(d:Day {day:5})<-[HAS_DAY]-(m:Month {month:3})<-[:HAS_MONTH]-(y:Year {year:2015})
RETURN
Group.Name as GroupName,
m.month + '-' + d.day + '-' + y.year as Date,
sum(HrlyMR.Reading) as HE1
如果这仍然是一个令人困惑的问题,感谢您的帮助和道歉。
答案 0 :(得分:1)
这是一个非常有疑问的问题。我已经把它弄清楚了。
MATCH (Group:LMRGroup)<-[:PART_OF_GROUP]-
(SubGroup:SubLMRGroup)<-[:PART_OF_GROUP]-
(c:Customer)-[:HAS_METER_READ]->
(HrlyMR:HourlyMeterRead)-[:METER_READ]->
(hr:Hour)<-[:HAS_HOUR]-
(d:Day {day:5})<-[HAS_DAY]-
(m:Month {month:3})<-[:HAS_MONTH]-
(y:Year {year:2015})
RETURN
distinct(hr.hour) as Hour,
Group.Name as GroupName,
m.month + '-' + d.day + '-' + y.year as Date,
sum(HrlyMR.Reading) as HE1;
我在(hr:Hour { hour: 1})
上移除了您的参数,以便它与所有小时匹配。然后,您只需按小时1,小时2,小时3等将distinct(hr.hour)
返回到组记录,依此类推。其余结果应自动聚合到适当的小时,不需要您在SQL中使用的GROUP BY
语句