0

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') 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"
  }

クイルを使用した私のクエリは

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 句でフィルタされたカウントを計算する方法は正しいですか? いいえの場合、他の方法はありますか?

4

1 に答える 1