2

次のクエリがあります。

SELECT 
    DATEDIFF(day, DateUsed, DateExpires) AS DaysBetweenExpirationAndUse
FROM tblOffer

DaysBetweenExpirationAndUse列から平均日数を取得するにはどうすればよいですか?

4

3 に答える 3

10

これはうまくいくはずです:

SELECT AVG(DATEDIFF(d, DateUsed, DateExpires)) AS AvgDaysBetweenExpirationAndUse 
FROM tbl

AVG の小数点以下の桁数が必要な場合:

SELECT AVG(DATEDIFF(d, DateUsed, DateExpires)*1.0) AS AvgDaysBetweenExpirationAndUse 
FROM tbl

AVGグループ化せずに および他のフィールドも選択する場合:

SELECT *
      ,AVG(DATEDIFF(d, DateUsed, DateExpires)*1.0) OVER() AS AvgDaysBetweenExpirationAndUse 
FROM tbl
于 2013-08-30T18:41:29.053 に答える
4

このSQLは実行できますか?

SELECT AVG(t.a) from
  (
    SELECT DATEDIFF(d, DateUsed, DateExpires) AS a 
    FROM tbl
  ) as t

これは私のテストです:

ここに画像の説明を入力

しかし、良い答えは次のとおりです。

SELECT AVG(DATEDIFF(d, DateOne, DateTwo)*1.0) AS avgDate
    FROM Test
于 2013-08-30T18:41:15.560 に答える
1
SELECT AVG(DATEDIFF(d, DateUsed, DateExpires)) FROM tbl

正常に動作するはずです。DATEDIFF整数値を返すため、結果も整数になることに注意してください。

「正確な」(浮動小数点が得られる限り)平均が必要な場合は、使用します

SELECT AVG(CAST(DATEDIFF(d, DateUsed, DateExpires) AS FLOAT)) FORM tbl
于 2013-08-30T18:45:25.407 に答える