在SQLite中获取数字的最低值?

Ada*_*ith 18 sql sqlite floor

我有一个SQLite数据库,其中包含一个表,其中包含保龄球中心的一些联赛球员的得分.我正在尝试获取每个玩家ID的分数列的平均值.这个问题是我只需要平均值的整个部分,它不应该四舍五入(例如:平均值168.99应该返回168,而不是169).

当试图在谷歌上找到这样的东西时,我只找到了SQL Server和其他一些解决方案,但不是SQLite,所以如果有人能帮我这个,我真的很感激!

到目前为止,我正在使用ROUND(AVG(s1.Score),2)并且我正在截断我的Java程序中的额外部分,该部分使用数据库将其转换为String,删除不需要的部分,然后将其转换为一个整数,但如果可能的话,我宁愿在SQL中全部完成.

Der*_*omm 32

您可以使用将其转换为整数.它将截断它,相当于地板.

  • 只有当`x> = 0`时,`cast(x as int)`与`floor(x)`相同. (16认同)
  • @Adam:类似于`case当x> = 0然后cast(x as int)当cast(x as int)= x然后cast(x as int)else cast(x - 1.0 as int)end`应该工作,即使它相当难看.如果我真的需要这个,我可能会尝试[添加一个合适的`floor`功能](http://www.sqlite.org/c3ref/create_function.html). (4认同)

ded*_*ed' 9

你可以使用round(值 - 0.5)(见此处)

  • +1表示完整性.这个解决方案也可以工作,但是和其他公布的答案一样,它只适用于x> = 0.例如,floor(-2.8)应该返回-3,但是使用你的解决方案,floor(( - 2.8 - 0.5))会返回-4. (3认同)