我正在我的 Swift iOS 应用程序中的 GRDB 中运行一个查询,尝试查找被猜错次数超过特定%的词汇:
func getIncorrectWords(db: GRDB.Database, threshold: Double) throws -> [Word] {
return words
.filter(Column("timesCorrect") / Column("timesSeen") < threshold)
.fetchAll(db);
}
但它包括所有曾经被猜错的单词。
如何才能将其与正确的阈值进行比较?
列是整数,因此您正在进行整数除法。
在SQLite中,必须cast(
CAST(timesCorrect AS REAL) / timesSeen
),而且GRDB中好像没有别名,所以直接写SQL即可:
func getIncorrectWords(db: GRDB.Database, threshold: Double) throws -> [Word] {
return words
.filter(sql: "CAST(timesCorrect AS REAL) / timesShown < ?", arguments: [threshold])
.fetchAll(db);
}