【发布时间】:2013-02-18 16:00:52
【问题描述】:
我有一个有两列的表格:
标记
CREAT_TS
我想计算两个日期范围(例如 startDate 和 endDate)之间的每日平均分数
我进行了以下查询:
select SUM(MARKS)/ COUNT(date(CREAT_TS)) AS DAILY_AVG_MARKS,
date(CREAT_TS) AS DATE
from TABLENAME
group by date(CREAT_TS)
通过这个查询,只有当数据库中有一行对应的日期时,我才能获得每日平均值。但我的要求是,即使没有行,我也想在那个日期显示 0。 我的意思是,如果 (startDate, endDate) 之间有 X 天,我希望查询返回 X 行
谁能帮帮我。 :(
【问题讨论】:
-
你如何定义startDate和endDate?它们是参数,
creat_ts的 MIN 和 MAX,还是其他? -
您可能想要构建一个日历表,然后执行一个OUTER JOIN。见brianshowalter.com/calendar_tables
-
请注意,
AVG(MARKS)也可以正常工作 -
@PM77-1,它们可以是任何时间戳。