【发布时间】:2017-03-21 16:44:22
【问题描述】:
我试图在一段时间内获得平均值(例如:过去 6 个月、上个月、上周......)。
为此,我创建了 4 个查询。我可以清楚地做某事吗?
/** ON SELECTED DATE*/
SELECT AVG(RUN_TIME)
FROM (SELECT (DATEDIFF(minute,MIN(CAST(START_DATE AS DATETIME)), MAX(CAST(END_DATE AS DATETIME)))) as RUN_TIME FROM TableTest where DATE_EXPECTED = DATE_SELECTED ) f
/**ON 6 last month*/
SELECT AVG(RUN_TIME)
FROM (SELECT (DATEDIFF(minute,MIN(CAST(START_DATE AS DATETIME)), MAX(CAST(END_DATE AS DATETIME)))) as RUN_TIME FROM TableTest
where Month(CAST(DATE_SELECTED AS DATETIME)) BETWEEN Month(CAST(DATE_SELECTED AS DATETIME) ) AND Month(CAST(DATE_SELECTED AS DATETIME) )+6 ) f
/** on 30 last days */
SELECT AVG(RUN_TIME)
FROM (SELECT (DATEDIFF(minute,MIN(CAST(START_DATE AS DATETIME)), MAX(CAST(END_DATE AS DATETIME)))) as RUN_TIME FROM TableTest where DATE_EXPECTED between DATE_SELECTED and DATE_SELECTED+30) f
/* on 5 last days */
SELECT AVG(RUN_TIME)
FROM (SELECT (DATEDIFF(minute,MIN(CAST(START_DATE AS DATETIME)), MAX(CAST(END_DATE AS DATETIME)))) as RUN_TIME FROM TableTest where DATE_EXPECTED between DATE_SELECTED and DATE_SELECTED+5 ) f
它正在工作,但我想知道我是否能以最好的方式做这件事。
谢谢,
【问题讨论】:
-
是的,我想要一个平均值。我还在学习:我不应该使用平均 AVG 吗?
-
你应该看看这篇关于使用日期快捷方式的文章。 sqlblog.com/blogs/aaron_bertrand/archive/2011/09/20/…
标签: sql sql-server average period