DBFlow Android select 最常见的值

DBFlow Android select most common value

我想 select 使用 dbFlow 的最常见名称。 在 SQLite 中它将是:

SELECT `Employee`.name
FROM `Employee`
GROUP BY `Employee`.name
HAVING COUNT(*) =
  (SELECT MAX(cn) FROM
     (SELECT `Employee`.name, COUNT(*) AS cn
      FROM `Employee`
      GROUP BY `name`))

我试过:

        SQLite.select(Employee_Table.name)
                .from(Employee.class)
                .groupBy(Employee_Table.name)
                .having(Method.count().eq(
                        SQLite.select(
                                Method.max("cn")).from(
                                SQLite.select(Employee_Table.name, Method.count().as("cn"))
                                        .from(Employee.class)
                                        .groupBy(Employee_Table.name)
                        )
                        )
                )

但是Method.max不接受别名。或者我应该 运行 只是一个原始查询?

Method.max 只接受 属性 您可以创建一个。

public static Property<Long> name(String value) {
    return new Property<Long>(null, value) {
        @Override
        public String toString() {
            return nameAlias.nameRaw();
        }
    };
}

用法:

Method.max(name("cn"))