I want to do this SELECT MAX(age), MIN(age) FROM users WHERE name = 'Rick'
. The best I came up with involves 2 queries: Users.filter(_.name === 'Rick').map(_.age).max
This is supported, but first, you'll need to group it. Since you're treating the entire set as a group, group it by true
and slick will ignore it when generating the SQL:
val q = Users.filter(_.name === 'Rick').groupBy { _ => true }.map {
case (_, group) =>
(group.map(_.age).max, group.map(_.age).min)
}
It should yield you something like this:
q.selectStatement
# => select max(x2."age"), min(x2."age") from "Users" x2
Another approach you might try would be a union.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With