我有一个包含保龄球中心某些联赛玩家得分的表的SQLite数据库。我正在尝试获取每个玩家ID的Score列的平均值。这个问题在于,我只需要平均值的整数部分,而且不应该四舍五入(例如:平均值为168.99应该返回168,而不是169)。
在Google上寻找类似解决方案时,我只找到了SQL Server和其他一些解决方案,但没有SQLite的解决方案,所以如果有人可以帮助我解决这个问题,我会非常感激!
到目前为止,我使用的是ROUND(AVG(s1.Score),2)
,然后在我的使用数据库的Java程序中截断额外的部分,通过将其转换为字符串、删除不需要的部分,然后将其强制转换为整数来完成,但如果可能的话,我更想在SQL中完成所有操作。
x >= 0
,那么cast(x as int)
和floor(x)
的作用是相同的。 - mu is too shortcase when x >= 0 then cast(x as int) when cast(x as int) = x then cast(x as int) else cast(x - 1.0 as int) end
这样的语句应该可以工作,尽管它看起来有些丑陋。如果我确实需要这个功能,我可能会尝试添加一个适当的floor
函数。 - mu is too shortx >= 0
(这应该是保龄球得分的情况,对吧?),快速简单的“转换”是一个不错的解决方案,只要注意洞口在哪里就可以了。 - mu is too short