Mysql 宏扩展期间出现异常:[错误]java.lang.IllegalStateException:无效的按聚合分组:
我在MYSQL中有一个这样的表Mysql 宏扩展期间出现异常:[错误]java.lang.IllegalStateException:无效的按聚合分组:,mysql,scala,group-by,case,quill.io,Mysql,Scala,Group By,Case,Quill.io,我在MYSQL中有一个这样的表 create table Employee( id tinyint, name char(36), is_permanent tinyint, company_name char(36), designation Char(36), primary key (id) )) 我想用Quill-SQL在这个表上写一个SELECT查询 select count(1), sum((case when (`designation` = 'software'
create table Employee(
id tinyint,
name char(36),
is_permanent tinyint,
company_name char(36),
designation Char(36),
primary key (id)
))
我想用Quill-SQL在这个表上写一个SELECT查询
select count(1), sum((case when (`designation` = 'software') then 1 else 0 end)) from employee group by company_name;
我写了一个模型
case class Employee(id: Int,
name: String,
is_permanent: Boolean,
company_name: String,
designation: Designation)
trait Designation {
val value: String
}
case object SoftwareEngineer extends Designation {
override val value: String = "software"
}
case object MechanicalEngineer extends Designation {
override val value: String = "mechanical"
}
我使用quill的查询是
ctx.run {
query[Employee].groupBy(_.company_name).map {
case (compName, employeeTable) =>
(employeeTable.size,
employeeTable.filter(_.designation == lift(SoftwareEngineer)).size,
compName)
}
}
其中,ctx
是羽毛笔上下文
但是,编译器显示了一个错误
exception during macro expansion:
[error] java.lang.IllegalStateException: Invalid group by aggregation: 'x48.filter(x49 =>
x49.designation == ?).size'
group by子句中计算过滤计数的方法正确吗?如果否,还有其他方法吗?查找group by子句的条件计数的方法不正确
employeeTable.filter(_.designation == lift(SoftwareEngineer)).size,
但是
当然,为名称定义了合适的编码器
employeeTable.map { i =>
if (i.`designation` == lift(SoftwareEngineer)) 1
else 0
}.sum