次のクエリがあります。
SELECT
DATEDIFF(day, DateUsed, DateExpires) AS DaysBetweenExpirationAndUse
FROM tblOffer
DaysBetweenExpirationAndUse
列から平均日数を取得するにはどうすればよいですか?
次のクエリがあります。
SELECT
DATEDIFF(day, DateUsed, DateExpires) AS DaysBetweenExpirationAndUse
FROM tblOffer
DaysBetweenExpirationAndUse
列から平均日数を取得するにはどうすればよいですか?
これはうまくいくはずです:
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
この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
SELECT AVG(DATEDIFF(d, DateUsed, DateExpires)) FROM tbl
正常に動作するはずです。DATEDIFF
整数値を返すため、結果も整数になることに注意してください。
「正確な」(浮動小数点が得られる限り)平均が必要な場合は、使用します
SELECT AVG(CAST(DATEDIFF(d, DateUsed, DateExpires) AS FLOAT)) FORM tbl