从 select 语句中的列计算
Calcuation from columns inside select statement
我有一个 sqlite3 table ACCOUNTS
,它包含四列 NAME
、SCORE
、START_TIME
和 CURRENT_TIME
。 START_TIME
和 CURRENT_TIME
以毫秒为单位(自 1970 年起)。现在我想从每一行计算 SCORE / ((CURRENT_TIME - START_TIME) / (1000*60*60*24))
,这意味着每天的平均分数。结果应该按照每天的这个平均分数排序(降序)。
我想到了类似的东西,比如
SELECT NAME name, SCORE score FROM ACCOUNTS ORDER BY score DESC, name ASC
但是我不知道如何合并上面的计算。
你似乎已经解决了这个问题,只是错过了一个表达式,它给你当前的 date/time 作为纪元。在 SQLIte 中,您可以为此使用 strftime('%s', 'now')
- 这个 returns 自 unix 纪元以来 秒 的数量,而不是毫秒,因此需要进行一些调整:
select
name,
score,
score / (strftime('%s', 'now') - starttime / 1000) / 60 / 60 / 24 avg_daily_score
from accounts
order by avg_daily_score desc
我有一个 sqlite3 table ACCOUNTS
,它包含四列 NAME
、SCORE
、START_TIME
和 CURRENT_TIME
。 START_TIME
和 CURRENT_TIME
以毫秒为单位(自 1970 年起)。现在我想从每一行计算 SCORE / ((CURRENT_TIME - START_TIME) / (1000*60*60*24))
,这意味着每天的平均分数。结果应该按照每天的这个平均分数排序(降序)。
我想到了类似的东西,比如
SELECT NAME name, SCORE score FROM ACCOUNTS ORDER BY score DESC, name ASC
但是我不知道如何合并上面的计算。
你似乎已经解决了这个问题,只是错过了一个表达式,它给你当前的 date/time 作为纪元。在 SQLIte 中,您可以为此使用 strftime('%s', 'now')
- 这个 returns 自 unix 纪元以来 秒 的数量,而不是毫秒,因此需要进行一些调整:
select
name,
score,
score / (strftime('%s', 'now') - starttime / 1000) / 60 / 60 / 24 avg_daily_score
from accounts
order by avg_daily_score desc