2017-08-15 5 views
2

dbFlowを使用して最も一般的な名前を選択します。DBFlow Androidは最も一般的な値を選択します

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は別名を受け入れていない SQLiteのでは、それは次のようになります。または、生のクエリを実行する必要がありますか?

答えて

1

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")) 
+0

おかげで、それは動作しますが、私は私のクエリを変更する必要がありました。 – kkk

関連する問題