【问题标题】:Do Aggregation with Slick使用 Slick 进行聚合
【发布时间】:2017-08-21 06:06:12
【问题描述】:
【问题讨论】:
标签:
scala
slick
scalaquery
【解决方案1】:
要检索另一列,您可以执行以下操作。下面的示例计算一列的max,找到具有该最大值的行,并返回该行中另一列的值:
val coffees = TableQuery[Coffees]
val mostExpensiveCoffeeQuery =
for {
maxPrice <- coffees.map(_.price).max.result
c <- maxPrice match {
case Some(p) => coffees.filter(_.price === p).result
case None => DBIO.successful(Seq())
}
} yield c.headOption.map(_.name)
val mostExpensiveCoffee = db.run(mostExpensiveCoffeeQuery)
// Future[Option[String]]
或者,返回一个完整的Coffees 对象:
val mostExpensiveCoffeeQuery =
for {
...
} yield c.headOption
val mostExpensiveCoffee = db.run(mostExpensiveCoffeeQuery)
// Future[Option[Coffees]]