This is supported, but first you need to group it. Since you are treating the entire set as a group, group it with true , and slick will ignore it when creating SQL:
val q = Users.filter(_.name === 'Rick').groupBy { _ => true }.map { case (_, group) => (group.map(_.age).max, group.map(_.age).min) }
This should give you something like this:
q.selectStatement # => select max(x2."age"), min(x2."age") from "Users" x2
Another approach you could try is pooling.
source share