【问题标题】:Get daily average pr month when some days are missing?当缺少某些日子时,获取每月的日平均值?
【发布时间】:2017-11-01 14:17:43
【问题描述】:

我有这个查询可以找到每月的日平均值:

select avg(d.dayilyCount)
from (
select count(*) as dayilyCount, timestamp as dt, strftime('%d-%m-%Y', timestamp / 1000, 'unixepoch', 'localtime') as dmy 
from T group by dmy
) d 
group by strftime('%m-%Y', d.dt / 1000, 'unixepoch', 'localtime')

问题在于它不考虑空的日子。我该如何解决?

例如:如果 1 月份有 28 天,而只有 20 天有数据。它只会计算和平均 20 天,缺少 8 天。

【问题讨论】:

  • 如果有 20 天的数据,这种计算方式不是比除以 28 更准确吗?
  • 是的,但就我而言,没有任何东西的一天应该算作 0

标签: sql sqlite android-sqlite


【解决方案1】:
SELECT
  SUM(d.dayilyCount) / (SELECT
    julianday('now', 'start of month', '+1 month', '-1 day') - julianday('now', 'start of month') + 1) as mon_avg
FROM (SELECT
  COUNT(*) AS dayilyCount,
  timestamp AS dt,
  strftime('%d-%m-%Y', timestamp / 1000, 'unixepoch', 'localtime') AS dmy
FROM T
GROUP BY dmy) d
GROUP BY strftime('%m-%Y', d.dt / 1000, 'unixepoch', 'localtime');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2015-07-14
    相关资源
    最近更新 更多