我正在 SSMS 中創建一個資料庫,我正在嘗試從 2 個平板電腦的 2 列計算 AVG;我寫 :
;WITH combined AS
(
SELECT Datum_narodenia
FROM Zamestnanci
UNION ALL
SELECT Datum_narodenia
FROM Ob?aniaSR
)
SELECT AVG(Datum_narodenia)
FROM combined;
但我得到了這個錯誤:
訊息 8117,級別 16,狀態 1
運算元資料型別日期對于 avg 運算子無效。
我創建了表 1:
CREATE TABLE Zamestnanci
(
id_Zamestnanca int not null,
Meno varchar(50) null,
Priezvisko varchar(50)null,
Adresa varchar(50) null,
Datum_narodenia date null,
PRIMARY KEY (id_Zamestnanca)
);
CREATE TABLE Ob?aniaSR
(
id_Ob?ana int not null,
Meno varchar(50) null,
Priezvisko varchar(50) null,
Adresa varchar(50) null,
Datum_narodenia date null,
Zápis_v_trestnom_registry varchar(50) null,
PRIMARY KEY (id_Ob?ana)
);
Datum_narodenia 表示來自女巫的 Date_of_birth 我嘗試計算 AVG。
根據您計算 AVG 年齡的最佳方法是什么?感謝您的回答和建議。
uj5u.com熱心網友回復:
年齡的非常接近的計算(這個答案中有很多細節)使用日期和現在之間的小時差除以一年中的小時數(8766/24 = 365.25),它試圖大致解釋飛躍年; 它是不完美的,但恕我直言,簡單和正確之間的一個很好的權衡:
SELECT DATEDIFF(HOUR,'19860201',GETDATE())/8766;
所以:
;WITH combined AS
(
SELECT Datum_narodenia
FROM Zamestnanci
UNION ALL
SELECT Datum_narodenia
FROM Ob?aniaSR
)
SELECT AVG(DATEDIFF(HOUR, Datum_narodenia, GETDATE())/8766)
FROM combined;
現在,這會進行整數數學運算,因此您可能想要:
;WITH combined AS
(
SELECT Datum_narodenia
FROM Zamestnanci
UNION ALL
SELECT Datum_narodenia
FROM Ob?aniaSR
)
SELECT CONVERT(DECIMAL(5,1),
AVG(DATEDIFF(HOUR, Datum_narodenia, GETDATE())/8766.0))
FROM combined;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/418692.html
標籤:
