【发布时间】:2022-01-20 21:39:11
【问题描述】:
我正在 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 年龄的最佳方法是什么?感谢您的回答和建议。
【问题讨论】:
-
您的 CTE 没有问题,您阅读错误信息了吗?假设您使用的是 SQL Server 给定您的 MSSMS 注释,则您不能在
date列上使用avg()。 -
@Stu 那么你有什么建议呢?我正在尝试从日期中获取年龄,然后从中获取平均值。有没有可能以这种方式做到这一点?是的,你是对的,我正在使用 SQL 服务器
-
那么您首先需要的是年龄,而不是日期,请参阅this post
-
@Stu 它给了我
30.033994 30 30我是否必须对两个平板电脑中的所有日期都执行此操作? -
除了“你不能平均日期”问题之外,问题中的错误是因为你有一个声明 before
WITH没有正确终止用分号。请get in that habit.
标签: sql sql-server database