示例:我有以下数据集:
date eur usd aud
------------------------------
2015-01-01 0.5 1.0 1.5
2015-01-02 0.6 1.1 1.6
2015-01-03 0.4 1.0 1.3
....
2015-02-01 0.5 1.0 1.5
2015-02-02 0.6 1.1 1.6
2015-02-03 0.4 1.0 1.3
我的目标是计算一年中每周的平均比率eur / usd eud / aud。我期待以下结果:
avg eur / usd:
------------------
Week 1 0.5
Week 2 0.54
Week 3 0.4
为了计算eur / usd比率,我添加了NSExpression
。这是代码:
let usdExpression = NSExpression(forKeyPath: "usd")
let eurExpression = NSExpression(forKeyPath: "eur")
let ratioExpression = NSExpression(forFunction: "divide:by:", arguments: [usdExpression, eurExpression])
let avgRatioExpression = NSExpression(forFunction: "average:", arguments: [ratioExpression])
我将表达式添加到获取请求中。现在我要按周分组。我不在数据库中存储一周(我只在那里有日期)。我已将transient property
添加到我的模型中并在那里实现了逻辑:
var weekOfYear {
var numberOfWeek: Int?
...
return "Week \(numberOfWeek)"
}
但我无法通过此属性进行分组。那么我有什么办法可以获得分组值吗?如果不是,似乎我的表达方式毫无用处。
答案 0 :(得分:0)
您不能按瞬态进行分组,因为它实际上并未存储在SQL中。您可以使瞬态值成为持久值并更新存储中的所有记录,然后您可以将其用于获取。这可能是最好的方法,因为周数不会改变,并且是一小块数据,因为数据增长到内存或运行多次提取将花费更多的时间。