我有一个Trucks
带有两个日期列的表:Arrival
和Released
。我可以计算出这些日期之间的平均天数,如下所示:
SELECT avg(julianday(released) - julianday(arrival))
FROM Trucks
但是,我只想计算工作日-也就是说,我想忽略周六和周日。有什么办法可以在SQLite中做到这一点?我见过针对更健壮的RDBMS(如Oracle和MSSQL)的解决方案,但没有一种适用于SQLite。
天的原始差异必须根据arrival
和released
天的工作日进行调整(仅):
rel arr|0 1 2 3 4 5 6
-------+-+-+-+-+-+-+-
0 |2 0 0 0 0 0 1
1 |2 2 0 0 0 0 1
2 |2 2 2 0 0 0 1
3 |2 2 2 2 0 0 1
4 |2 2 2 2 2 0 1
5 |2 2 2 2 2 2 1
6 |2 2 2 2 2 2 2
这个数字可以用一个简单的表达式(这里是内部CASE表达式)来计算:
SELECT
AVG(julianday(released) - julianday(arrival) -
CASE WHEN julianday(released) = julianday(arrival) THEN 0
ELSE (CAST((julianday(released) - julianday(arrival)) / 7 AS INTEGER) * 2
) +
CASE WHEN strftime('%w', arrival) <= strftime('%w', released) THEN 2
ELSE strftime('%w', arrival) = '6'
END
END)
FROM trucks
(类似布尔值的表达式x='6'
返回0或1。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句